我收到错误 "Cannot time travel Delta table to version X",而在 Azure Databricks 上查看历史记录时我可以看到版本 X

I receive the error "Cannot time travel Delta table to version X" whereas I can see the version X when looking at the history on Azure Databricks

我在 delta lake 中有一个 table,它具有以下 tblproperties:

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

当我查看历史时,我可以看到:

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

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

我收到此错误:

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

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

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

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

然后,您必须在您的 delta 中启动类似的东西 table:

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

它将保留您的版本直到 X 天。