我收到错误“无法将 Delta 表时间旅行到版本 X”,而在 Azure Databricks 上查看历史记录时可以看到版本 X

时间:2021-03-10 09:14:58

标签: azure databricks azure-databricks delta-lake

我在 delta 湖中有一张表,其中包含以下 tbl 属性: enter image description here

我正在尝试访问上个月存在的版本 322。

当我查看历史时,我可以看到: enter image description here

但是当我尝试使用这样的命令访问它时:

spark.read.format("delta").option("versionAsOf", 322).load(path)

我收到此错误:

AnalysisException: Cannot time travel Delta table to version 322. Available versions: [330, 341].;

我无法理解这个问题。我正在使用 Azure Databricks。

1 个答案:

答案 0 :(得分:0)

我不确定是否理解此错误。 DeltaLake 中有一个开放的拉取请求可以解决这个问题:https://github.com/delta-io/delta/pull/627

直到那时,Databricks 的一个人给了我一个解决方法:将 delta.checkpointRetentionDuration 设置为 X 天。这将使您的检查点保持足够长的时间以访问旧版本。

然后,您必须在增量表中启动类似的内容:

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

它会将您的版本保留 X 天。

相关问题