[英]How to specify delta table properties when writing a steaming spark dataframe
假設我有一個流媒體 dataframe,我將它寫入 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?
如果您查看文檔,您可以看到您可以設置以下屬性:
spark.conf.set(
"spark.databricks.delta.properties.defaults.autoOptimize.optimizeWrite", "true")
然后所有新創建的表都將delta.autoOptimize.optimizeWrite
設置為true
。
另一種方法 - 創建不帶選項的表,然后嘗試執行alter table set tblprperties
(雖然未測試)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.