python - 我们可以删除 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 表的最新版本中删除数据,但在旧版本被明确清除之前不会将其从物理存储中删除”
如果我必须运行真空命令如何在最新日期而不是旧日期使用它们。
解决方案
您需要使用 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 小时之后创建的任何版本都将被删除。
希望这能回答你的问题。
推荐阅读
- javascript - 提取对象数组中的动态对象值
- regex - 正则表达式将长度限制为 8 个字符
- python - ffmpeg 命令抛出“无效的 ss 持续时间规范:00:00:00,000”
- c# - 在 ViewModel 中赋值时绑定不起作用
- swiftui - swiftUI - 强制屏幕到横向后无法关闭模式屏幕
- websphere-portal - WebSphere 门户内容上 chrome 的混合内容问题
- linux - 将设备中断寄存器设置为 0 不会导致任何结果
- python - Python NameError:名称'keys'未定义错误pynput
- javascript - useState hook如何知道react中的调用上下文
- javascript - 如何在循环内循环并通过 AJAX 调用对 JSON 对象的结果进行排序?