apache Spark sql 表覆盖问题

pao*_*one 6 apache-spark-sql azure-databricks

我使用下面的代码从 databricks 中的数据帧创建一个表并遇到错误。

df.write.saveAsTable("newtable")
Run Code Online (Sandbox Code Playgroud)

第一次工作正常,但如果我像下面这样重写,则可重复使用

df.write.mode(SaveMode.Overwrite).saveAsTable("newtable")
Run Code Online (Sandbox Code Playgroud)

我收到以下错误。

错误信息:

org.apache.spark.sql.AnalysisException: Can not create the managed table newtable. The associated location dbfs:/user/hive/warehouse/newtable already exists
Run Code Online (Sandbox Code Playgroud)

小智 5

SQL 配置“spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation”已在版本 3.0.0 中删除。删除它是为了防止丢失非默认值的用户数据。


vaq*_*han 3

运行以下命令来修复问题:

     dbutils.fs.rm("dbfs:/user/hive/warehouse/newtable/", true)
Run Code Online (Sandbox Code Playgroud)

或者

设置标志

spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation = true

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