我有一个需要删除的表,删除事务日志并重新创建,但是当我尝试删除时,出现以下错误。我已经对此进行了维修表声明,可能对错误负责,但不确定。
IllegalStateException:事务日志的完整性检查失败。我们建议您联系Databricks支持以寻求帮助。要禁用此检查,请将spark.databricks.delta.state.corruptionIsFatal设置为false。验证失败: 表大小(字节)-预期:0计算:63233 文件数-预期:0计算:1
答案 0 :(得分:1)
我们认为这可能与s3最终一致性有关。请在删除Delta目录后尝试等待几分钟,然后再向其中写入新数据。另外,普通的MSCK REPAIR TABLE
对Delta不会做任何事情,因为Delta不使用Hive Metastore来存储分区。有一个FSCK REPAIR TABLE,但这是用于从基础文件系统中找不到的Databricks Delta表的事务日志中删除文件条目。
我们不建议就地覆盖Delta表,就像使用普通的Spark表那样。 Delta与普通表不同-它是一个表,外加一个事务日志,以及许多数据版本(除非完全清除)。如果要覆盖表的某些部分甚至整个表,则应使用Delta的delete
functionality。如果要完全更改表,请考虑写入一个全新的目录,例如/table/v2/...
并单独删除另一个表。