gpt4 book ai didi

apache-spark - 编写 steaming spark 数据帧时如何指定增量表属性

转载 作者:行者123 更新时间:2023-12-05 01:55:39 24 4
gpt4 key购买 nike

假设我有一个流数据帧,我正在将它写入 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?

最佳答案

如果你查看 documentation ,你可以看到你可以设置以下属性:

spark.conf.set(
"spark.databricks.delta.properties.defaults.autoOptimize.optimizeWrite", "true")

然后所有新创建的表都将 delta.autoOptimize.optimizeWrite 设置为 true

另一种方法 - 创建不带选项的表,然后尝试执行 alter table set tblprperties(尽管未测试)

关于apache-spark - 编写 steaming spark 数据帧时如何指定增量表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70168370/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com