繁体   English   中英

在 AWS s3 上删除 Delta Lake Partion 的正确方法

[英]Correct Method to Delete Delta Lake Partion on AWS s3

我需要删除带有关联 AWS s3 文件的 Delta Lake 分区,然后需要确保 AWS Athena 显示此更改。 目的是因为我需要重新运行一些代码来重新填充数据。

我试过这个

deltaTable = DeltaTable.forPath(spark, path)
deltaTable.delete("extract_date = '2022-03-01'") #extract date is the partition

它完成且没有错误,但 s3 上的文件仍然存在,即使在删除后运行MSK REPAIR TABLE后 Athena 仍然显示数据。 有人可以建议删除分区和更新 Athena 的最佳方法吗?

虽然你执行了删除操作,但数据仍然存在,因为 Delta 表有历史,只有当你执行VACUUM 操作时才会真正删除数据,并且操作时间会早于默认保留期(7 天)。 如果你想更快地删除数据,那么你可以运行带有参数RETAIN XXX HOURS的 VACUUM 命令,但这可能需要设置一些额外的属性来强制执行 - 请参阅文档以获取更多详细信息。

将添加到亚历克斯的答案中,如果你想缩短保留期少于 7 天,你必须更改配置属性: spark.databricks.delta.retentionDurationCheck.enabled to false.

来自原始文档:

Delta Lake 具有安全检查功能,可防止您运行危险的 VACUUM 命令。 如果您确定没有在此表上执行的操作花费的时间超过您计划指定的保留间隔,则可以通过将 Spark 配置属性 spark.databricks.delta.retentionDurationCheck.enabled 设置为 false 来关闭此安全检查.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM