首页 > 解决方案 > 我们可以删除 delta 湖中最新版本的 delta 表吗?

问题描述

我有一个包含 4 个版本的增量表。

DESCRIBE HISTORY cfm ---> 有 4 个版本。0,1,2,3。

我想删除版本 3 或 2。我怎样才能做到这一点?

我试过了

from delta.tables import *
from pyspark.sql.functions import *

deltaTable = DeltaTable.forPath(spark, "path of cfm files")

deltaTable.delete("'version' = '3'") 

这不会删除版本 3。 https://docs.delta.io/0.4.0/delta-update.html

“删除从 Delta 表的最新版本中删除数据,但在旧版本被明确清除之前不会将其从物理存储中删除”

如果我必须运行真空命令如何在最新日期而不是旧日期使用它们。

标签: pythonpysparkdelta-lake

解决方案


您需要使用 vaccum 命令来执行此操作。但是,vaccum 的默认保留时间为 7 天,如果您尝试在 7 天内清空任何内容,它将出错。

我们可以通过设置将绕过默认保留期检查的 spark 配置来解决此问题。

下面的解决方案:

from delta.tables import *

spark.conf.set("spark.databricks.delta.retentionDurationCheck.enabled", "false")
deltaTable = DeltaTable.forPath(spark, deltaPath)
deltaTable.vacuum(24)

*deltaPath -- 是您的增量表的路径

*24 - 表示保留版本控制的小时数,过去 24 小时之后创建的任何版本都将被删除。

希望这能回答你的问题。


推荐阅读