在操作mode('overwrite')期間設定saveAsTable():
df1.write.format('parquet').mode('overwrite').saveAsTable(
'spark_no_bucket_table1')
那為什么存表失敗呢?
pyspark.sql.utils.AnalysisException: Can not create the managed
table('`spark_no_bucket_table1`').
The associated location('file:experiments/spark-warehouse/spark_no_bucket_table1')
already exists.
uj5u.com熱心網友回復:
來自 Spark 的 2.4.0遷移指南:
從 Spark 2.4 開始,不允許創建具有非空位置的托管表。嘗試創建具有非空位置的托管表時拋出例外。將 spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation 設定為 true 會恢復以前的行為。該選項將在 Spark 3.0 中移除。
所以如果你在 >= 2.4.0 和 < 3.0.0 的版本中使用 Spark,你可以通過設定來解決:
spark.conf.set("spark.sql.legacy.allowCreatingManagedTableUsingNonemptyLocation","true")
對于 Spark 版本 > 3.0.0,您必須手動清理錯誤訊息中指定的資料目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/534228.html
上一篇:結構識別符號未定義,即使它是
下一篇:驗證資料框日期,回傳不匹配的值
