databricks 错误 IllegalStateException:事务日志的完整性检查失败

Posted

技术标签:

【中文标题】databricks 错误 IllegalStateException:事务日志的完整性检查失败【英文标题】:databricks error IllegalStateException: The transaction log has failed integrity checks 【发布时间】:2018-12-13 17:54:39 【问题描述】:

我有一个需要删除、删除事务日志并重新创建的表,但是当我尝试删除时,出现以下错误。

我已经对此进行了修复表语句,可能会导致错误但不确定。

IllegalStateException:事务日志的完整性检查失败。我们建议您联系 Databricks 支持以寻求帮助。要禁用此检查,请将 spark.databricks.delta.state.corruptionIsFatal 设置为 false。验证失败: 表大小(字节) - 预期:0 计算:63233 文件数 - 预期:0 计算:1

【问题讨论】:

【参考方案1】:

我们认为这可能只是与 s3 的最终一致性有关。请尝试在删除 Delta 目录后再等待几分钟,然后再将新数据写入其中。此外,正常的MSCK REPAIR TABLE 不会为 Delta 做任何事情,因为 Delta 不使用 Hive Metastore 来存储分区。有一个FSCK REPAIR TABLE,但这是为了从 Databricks Delta 表的事务日志中删除文件条目,这些条目在底层文件系统中不再存在。

我们不建议就地覆盖 Delta 表,就像使用普通 Spark 表一样。 Delta 不像一个普通的表——它是一个表,加上一个事务日志,以及许多版本的数据(除非完全真空)。如果你想覆盖表格的一部分,甚至整个表格,你应该使用Delta的deletefunctionality。如果你想彻底改变表,可以考虑写入一个全新的目录,例如/table/v2/...,并单独删除另一个表。

【讨论】:

也可以看replaceWhere-docs.databricks.com/delta/… 感谢您的帮助,无论我尝试什么,我都会收到相同的错误 IllegalStateException:事务日志的完整性检查失败。我们建议您联系 Databricks 支持以寻求帮助。要禁用此检查,请将 spark.databricks.delta.state.corruptionIsFatal 设置为 false。验证失败:表大小(字节) - 预期:0 计算:63233 文件数 - 预期:0 计算:1

以上是关于databricks 错误 IllegalStateException:事务日志的完整性检查失败的主要内容,如果未能解决你的问题,请参考以下文章

通过 Databricks 笔记本更改表表名 CONCATENATE 错误

SQL 语句中的 Databricks 错误:AnalysisException:无法解析 '``' 给定的输入列:

PythonException:从 UDF 引发异常:'ValueError:如何在 Databricks 中修复此错误?

尝试使用 apache spark 加载模块时出现 Databricks 错误 [重复]

Spark / Databricks 代码无法识别日期字段错误

databricks 错误 IllegalStateException:事务日志的完整性检查失败