繁体   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