我收到错误 "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 天。
我在 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 天。