我们如何修复 ADLS Gen 2 中的增量位置文件

Posted

技术标签:

【中文标题】我们如何修复 ADLS Gen 2 中的增量位置文件【英文标题】:How can we repair a Delta Location file in ADLS Gen 2 【发布时间】:2020-11-04 06:39:59 【问题描述】:

我正在使用 ADF 中的数据流在 ADLS Gen2 中截断和加载增量文件。管道成功运行后,如果我尝试读取 Azure Data Bricks 中的文件,则会出现以下错误。

找不到事务日志中引用的文件。当从文件系统中手动删除数据而不是使用表 DELETE 语句时,会发生这种情况。如需更多信息,

我发现消除这种情况的一种方法是在 ADB 中重新启动集群。但是,有没有更好的方法来解决这个问题?

【问题讨论】:

【参考方案1】:

有时,hive megastore 不会选择表分区/列中的更改,在尝试执行某些查询之前刷新表始终是一个好习惯。如果在当前作业仍在运行时从任何其他作业更改了从当前作业拾取的元数据,则可能会发生此异常。

Refresh Table: 使缓存条目无效,其中包括给定表或视图的数据和元数据。当缓存的表或与之关联的查询再次执行时,失效的缓存会以惰性方式填充。

%sql
REFRESH [TABLE] table_identifier

以下是解决此问题的一些建议:

在集群标签 (spark.databricks.io.cache.enabled false) 或使用 spark.conf.set("spark.databricks.io.cache.enabled", "false") 的主笔记本的第一个命令中添加配置 在删除操作后添加“sqlContext.clearCache()”。 删除操作后添加“FSCK REPAIR TABLE [db_name.]table_name”。

【讨论】:

【参考方案2】:

您可以将其从文件系统中删除,

dbutils.fs.rm(table_path, True)

【讨论】:

我认为这不是一个好的解决方案。这将删除存储在table_path的整个表!!!

以上是关于我们如何修复 ADLS Gen 2 中的增量位置文件的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 ADLS Gen2 文件的最后修改日期并将其保存到 python 中的 csv

如何使用 Azure databricks 通过 ADLS gen 2 中的多个工作表读取和写入 excel 数据

如何将 AMLS 连接到 ADLS Gen 2?

将 ADLS Gen 2 中的数据加载到 Azure Synapse

使用 Databricks 将文件从 Azure 文件移动到 ADLS Gen 2 并返回

无法在Databricks中为ADLS Gen2创建安装点