无法找到事务日志引用文件

无法找到事务日志引用文件发生于数据从文件系统人工删除时,而不是使用表DELETE语句

写由亚当巴夫拉卡

2022年5月10日

问题

作业失败报错无法找到事务日志引用文件.

示例栈跟踪

SQL语句错误:sparkExceptive:作业因阶段故障中止:6.0任务4次失败,最近故障:6.0级0.3任务丢失(TID106xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/mt/
          
           /part-00000-da504c51-3bb4-4406-bb99-3566c0e2f743-c000.snappy.parquet.无法找到事务日志引用文件发生于数据从文件系统人工删除时,而不是使用表DELETE语句For more information, see https://docs.www.neidfyre.com/delta/delta-intro.html#frequently-asked-questions ...Java.io.FileNotFoundExceptive:dbfss:/mnt/
           
            /part-00000-da504c51-3bb4-4406-bb99-3566c0e2f743-c000.snappy.parquet ...
           
          

因果

有三个常见原因传递错误消息

  • 因果一:启动Delta流作业,但在流作业启动处理前,底层数据删除
  • 因2:对Delta表执行更新,但事务文件没有更新最新细节
  • 原因3:多集群阅读或更新同一Delta表操作,结果产生集群指集群文件并删除并重编

求解

  • 因果一:你应使用一个新的检查站目录或设置spark属性spark.sql.files.ignoreMissingFiles归真聚类spark配置.
  • 因2:等待数据加载后刷新表可同时运行fsck更新事务文件最新细节
删除

信息学

fsck清除Delta表事务日志底层文件系统无法查找的任何文件项

  • 原因3:当表删除并重创时,驱动元数据缓存不正确不应删除表,应始终覆盖表if do删除表,应清除元数据缓存以缓解问题Python或Scala笔记本命令清除缓存
%python    spark._jvm.com.databricks.sql.transaction.tahoe.DeltaLog.clearCache()
scalacrips.sql.traction.toe.DeltaLog.cleCache


文章有帮助吗