如何修复 AWS S3 上损坏的 delta 湖表

问题描述

我最终手动删除了一些 delta Lake 条目(托管在 S3 上)。 现在我的 spark 作业失败了,因为增量事务日志指向文件系统中不存在的文件。 我遇到了这个https://docs.databricks.com/spark/latest/spark-sql/language-manual/delta-fsck.html 但我不确定在我的情况下应该如何运行此实用程序。

解决方法

您可以按照附加的文档轻松执行此操作。

如果您的 S3 顶部有蜂巢表,我已按如下方式执行此操作:

%sql
FSCK REPAIR TABLE schema.testtable DRY RUN

使用 DRY RUN 将列出需要删除的文件。可以先运行上面的命令,验证一下实际需要删除的文件。

一旦您确认您可以在没有 DRY RUN 的情况下运行实际的上述命令,它应该可以满足您的需求。

%sql
FSCK REPAIR TABLE schema.testtable

现在,如果您还没有创建 hive 表并且有一个路径(增量表),您可以在其中放置文件,如下所示:

%sql
FSCK REPAIR TABLE delta.`dbfs:/mnt/S3bucket/tables/testtable` DRY RUN

我是从 databricks 执行此操作,并将我的 S3 存储桶路径安装到 databricks。 您需要确保在 delta. 之后和实际路径之前有 ` 符号,否则它将无法工作。

这里也是为了执行实际的修复操作,您可以从上面的命令中删除 DRY RUN,它应该可以完成您所需要的操作。