4

在我的 spark 工作中,我尝试在每个微批量结构化流中覆盖一个表

batchDF.write.mode(SaveMode.Overwrite).saveAsTable("mytable")

它产生了以下错误。

  Can not create the managed table('`mytable`'). The associated location('file:/home/ec2-user/environment/spark/spark-local/spark-warehouse/mytable') already exists.;

我知道在 Spark 2.xx 中,解决这个问题的方法是添加以下选项。

spark.conf.set("spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation","true")

它在 spark 2.xx 中运行良好。但是,此选项在 Spark 3.0.0 中已删除。那么,我们应该如何在 Spark 3.0.0 中解决这个问题呢?

谢谢!

4

1 回答 1

0

看起来您在同一过程中运行测试数据生成和实际测试 - 您可以将它们替换为createOrReplaceTempView以将它们保存到 Spark 的内存目录而不是 Hive 目录中吗?

类似于:batchDF.createOrReplaceTempView("mytable")

于 2021-10-28T15:03:30.140 回答