簡體   English   中英

編寫蒸汽火花時如何指定增量表屬性 dataframe

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM