ADLS Gen2中parquet文件被移动或删除未体现在日志中是否可能?
Blob存储关联Delta表文件异常变动问题排查记录
问题初始表现
- 出现典型Delta Lake报错,该报错常规触发场景为:用户通过存储资源管理器手动删除文件,未使用表DELETE语句执行操作
- 涉及3张表的文件异常变动发生在凌晨1点-2点区间,该时间范围由依赖流程1点运行正常、2点运行失败的现象交叉验证
- 具体报错信息如下:
Caused by: com.[REDACTED].sql.io.FileReadException: Error while reading file
- 报错关联文件路径:
dbfs:/mnt/source-be/myfolder/folder/ingestdatetime=20211114011927/part-00000-ea38c232-4dd2-4e49-9847-17e5f5c1222d.c000.snappy.parquet - 报错逻辑说明:Delta事务日志中引用的文件无法找到,属于文件系统层面非标准操作导致的元数据与实际存储不一致问题
初期排查结果
- 查阅存储操作日志未发现对应文件的
delete file操作标记,使用的日志查询代码如下:
df_logs.where((df_logs._c12.contains('20211114011927'))
- 现有日志仅存在
GetPath、GetFileProperties、Readfile三类操作记录 - 确认文件确实从Blob存储原路径消失,排除Databricks侧计算引擎问题
- 待确认疑问:是否存在文件被移动/删除但未在存储日志中留下记录的可能性?
后续排查更新
- 核实文件未被删除,实际为分区目录被重命名:原分区名
ingestdatetime=20211114011927被修改为ingestdatetime=20211113011927 - 重命名操作的触发原因暂未明确,目前正在自查业务代码定位问题根源
内容的提问来源于stack exchange,提问作者OrganicMustard
相关产品推荐
相关产品推荐

