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

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

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

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

【问题讨论】:

    标签: pyspark apache-spark-sql databricks azure-databricks azure-data-lake-gen2


    【解决方案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的整个表!!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      相关资源
      最近更新 更多