apache spark sql table overwrite问题

问题描述

我正在使用以下代码从数据块中的数据帧创建表,并遇到错误

df.write.saveAsTable("newtable")

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

df.write.mode(SaveMode.Overwrite).saveAsTable("newtable")

我收到以下错误消息。

错误消息:

org.apache.spark.sql.AnalysisException: Can not create the managed table newtable. The associated location dbfs:/user/hive/warehouse/newtable already exists

解决方法

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

,

运行以下命令来解决问题:

     dbutils.fs.rm("dbfs:/user/hive/warehouse/newtable/",true)

设置标志

spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation = true

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