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

How can we repair a Delta Location file in ADLS Gen 2

我正在使用 ADF 中的数据流对 ADLS Gen2 中的增量文件执行 运行 分类和加载。在管道成功 运行 之后,如果我尝试读取 Azure Data Bricks 中的文件,我会收到以下错误。

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

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

有时 table partitions/columns 中的更改不会被 hive megastore 选中,在尝试进行一些查询之前刷新 table 始终是一个好习惯。如果从当前作业中获取的元数据从任何其他作业中更改而此作业仍然 运行.

,则会发生此异常

Refresh Table: 使缓存条目无效,其中包括给定 table 或视图的数据和元数据。当缓存的 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

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

dbutils.fs.rm(table_path, True)