deltaTable.generate("symlink_format_manifest") 不是增量

问题描述 投票:0回答:1

我正在使用 Spark 2.4.5、Scala 2.11

我在 S3 上设置了一个增量表。在我的应用程序的每次运行中,都会生成并附加一个新的数据分区。

df
.write
.format("delta")
.mode("append")
.save(deltaPath)

一旦附加分区,它也会:

val deltaTable = DeltaTable.forPath(deltaPath)
deltaTable.generate("symlink_format_manifest")

这个

symlink_format_manifest
大约需要20分钟,而总工作时间是28分钟。我检查了
_symlink_format_manifest/
下生成的文件,似乎所有旧分区每次都会更新。通过检查旧分区的清单文件的
last modified
确认了这一点。

我需要更改什么才能使

generate("symlink_format_manifest")
仅用于注册新分区而不是每次都重新更新所有以前的分区?

scala apache-spark delta-lake delta
1个回答
0
投票

这似乎正在发生,因为

_ symlink_format_manifest
文件夹包含过去 4 年的分区。但是,我的增量表正在运行,因此仅维护最近 30 天的分区。
问题似乎是 

vacuum

未清除

vacuum
文件夹中的分区。在 github 上也发现了相同的问题:
https://github.com/delta-io/delta/issues/443
建议的修复方法是更新

_symlink_format_manifest

版本。

    

© www.soinside.com 2019 - 2024. All rights reserved.