假設我有一個流資料幀,我正在將它寫入 Databricks Delta Lake:
someStreamingDf.writeStream
.format("delta")
.outputMode("append")
.start("targetPath")
然后從中創建一個增量表:
spark.sql("CREATE TABLE <TBL_NAME> USING DELTA LOCATION '<targetPath>'
TBLPROPERTIES ('delta.autoOptimize.optimizeWrite'=true)")
失敗了AnalysisException: The specified properties do not match the existing properties at <targetPath>。
我知道我可以事先創建一個表:
CREATE TABLE <TBL_NAME> (
//columns
)
USING DELTA LOCATION "< targetPath >"
TBLPROPERTIES (
"delta.autoOptimize.optimizeWrite" = true,
....
)
然后直接寫入它,但是用所有的列和它們的型別來寫這個 SQL 看起來有點額外/不必要的作業。那么有沒有辦法在寫入增量表時(第一次)而不是事先指定這些 TBLPROPERTIES ?
uj5u.com熱心網友回復:
如果您查看檔案,您會發現可以設定以下屬性:
spark.conf.set(
"spark.databricks.delta.properties.defaults.autoOptimize.optimizeWrite", "true")
然后所有新創建的表都將delta.autoOptimize.optimizeWrite設定為true.
另一種方法 - 創建沒有選項的表,然后嘗試做alter table set tblprperties(雖然沒有測驗)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/370295.html
上一篇:Spark-分解和合并列
