现在应该发生这种情况,这很奇怪。
代码如下: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]。
您收到的错误表明Delta表不再具有可用于时间旅行的版本1。
由于保留策略和
VACUUM
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'
)
""")
报名:用真空删除未使用的数据文件
与三角洲湖餐桌历史一起工作