databricks deltalake:无法时光旅行的三角洲表到版本1。可用版本:[3,23]

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

现在应该发生这种情况,这很奇怪。

代码如下:
trom delta.tables导入可达
导入pyspark.sql.functions

dt = DeltaTable.forPath(spark, saveloc) latest_version = int(dt.history().select(max(col("version"))).collect()[0][0]) lastest_table_dropped = spark.read.format("delta").option("versionAsof", latest_version).load(saveloc).createOrReplaceTempView('maxversion') start_table_dropped = spark.read.format("delta").option("versionAsof", 1).load(saveloc).createOrReplaceTempView('allprior')

我感谢Databricks确定的最新版本是3,但我不明白它现在无法使用最新版本的1?

我的DT历史记录如下:

AnalySisexception:无法时光旅行的三角洲表到版本1.可用版本:[3,23]。 enter image description here您收到的错误表明Delta表不再具有可用于时间旅行的版本1。 由于保留策略和VACUUM

操作,这些策略和操作都会发生。 delta Lake根据交易日志文件的保留阈值以及
databricks azure-databricks delta-lake timedelta
1个回答
0
投票
操作的频率和指定保留率保留了表版本。 如果您使用默认设置运行
VACUUM

,您将只能在过去的7天之前进行时间。 如果您的情况下,任何较旧的版本,例如版本1,如果它们超出了保留期,则可能已被删除。

Set delta.checkpointRetentionDuration

至x天,以保持检查点更长,可以访问较旧的版本。

next,在您的delta表上执行以下命令:

spark.sql(f""" ALTER TABLE delta.`path` SET TBLPROPERTIES ( delta.logRetentionDuration = 'interval X days', delta.deletedFileRetentionDuration = 'interval X days', delta.checkpointRetentionDuration = 'X days' ) """)

报名:
用真空删除未使用的数据文件
与三角洲湖餐桌历史一起工作


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.