python - 在AWS s3上删除Delta Lake分区的正确方法

标签 python amazon-s3 pyspark amazon-athena delta-lake

我需要删除具有关联 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 operation时才会真正删除数据。并且操作时间将早于默认保留期限(7天)。如果您想更快地删除数据,则可以使用参数 RETAIN XXX HOURS 运行 VACUUM 命令,但这可能需要设置一些其他属性来强制执行 - 请参阅文档以了解更多详细信息。

关于python - 在AWS s3上删除Delta Lake分区的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71357668/

相关文章:

python - 值得用 bash 脚本编写代码还是应该使用某种高级编程语言?

python - 是否可以控制函数在 python 中的执行方式?

amazon-s3 - Redshift unload 命令与parallel on 是否保证使用order by 子句对数据进行排序?

amazon-web-services - 云前突然变慢

python - aiobotocore-aiohttp - 获取 S3 文件内容并将其流式传输到响应中

python - PySpark 从本地函数广播变量

python - Celery 升级 (3.1->4.1) - 由对等方重置连接

python - 如何解决 sqlalchemy.orm.exc.UnmappedInstanceError

apache-spark - 由于 Kerberos : Caused by GSSException: No valid credentials provided .,spark-submit 无法连接到 Metastore,但在本地客户端模式下工作

apache-spark - Redis 和 Pyspark 配置