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