s3 存储桶中的输出文件在运行 Dbt 时不会被覆盖 - 使用 Iceberg 表配置的 Spark 模型

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

我们在 dbt 云配置中有一个模型,其中 Spark 在 AWS EMR 上运行,并以 Iceberg 作为目标表类型。

目前我们已经设置了配置:materialized: 'table',每次模型运行时,它都会在 s3 存储桶中创建输出文件,而不会删除或覆盖上次运行中创建的文件。

有人可以请教如何在 dbt Spark 模型中配置以在每次运行时删除与 s3 存储桶中先前执行相关的输出文件吗?

期望:对于每个模型运行,上次运行时存储在 s3 存储桶中的输出文件应被删除

apache-spark amazon-emr dbt apache-iceberg dbt-cloud
1个回答
0
投票

使用这些现代数据格式,尽量不要关心文件本身 - 它们由引擎(例如 EMR)管理。

Iceberg 和 Delta 等格式的一个好处是它们保留底层数据文件以及跟踪更改的“日志”。然后,您就可以“回到过去”到表的先前状态。这是因为它保留了所有历史数据。

如果您不希望保留历史数据(这意味着您将无法进行时间旅行),您可以将表配置为使快照过期

来自维护 - Apache Iceberg

对 Iceberg 表的每次写入都会创建表的新快照或版本。快照可用于时间旅行查询,或者表可以回滚到任何有效的快照。

快照会累积,直至通过

expireSnapshots
操作过期。建议定期创建过期快照,以删除不再需要的数据文件,并保持表元数据的大小较小。

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