如何在Azure Data Factory数据流将CSV写入Azure Data Lake Gen2时移除多余文件
ADF数据流写入ADLS Gen2临时状态文件问题解答
你在Sink输出目录看到的4个文件中,除了你预期的业务数据文件外,剩下的_started、_committed、_SUCCESS三类文件是ADF数据流底层Spark引擎使用HDFS兼容提交协议时生成的作业状态元数据,不属于业务数据范畴。
是否可以避免生成这三类文件?
可以直接在配置层面关闭生成逻辑:
进入对应数据流的Sink配置页,在设置选项卡中找到禁用提交日志生成(部分区域版本显示为“隐藏临时文件”)选项,勾选后重新发布运行作业即可,调整后仅会输出你配置的业务数据文件,不再生成额外的状态文件。
对应的最佳实践是什么?
- 若下游处理任务会直接扫描Sink输出目录的全部文件,建议直接关闭提交日志生成,避免下游读取时将状态文件识别为数据文件引发格式报错、数据统计异常等问题
- 若你需要保留作业运行轨迹用于后续故障排查,可以保留提交日志,同时在下游数据读取逻辑中添加文件名过滤规则,直接忽略以
_开头的隐藏文件即可 - 大规模批量同步、高频率调度的数据流作业,建议关闭提交日志生成,减少小文件写入量,降低ADLS Gen2的存储开销与目录扫描性能损耗
已生成的状态文件是否需要删除?
根据你的使用场景判断即可:
- 无作业排查、审计需求的前提下可以直接删除,不会影响已写入的业务数据的完整性与可读性
- 有排障、审计需求的场景可以将这部分文件归档到冷存储层,保留30~90天周期后再删除即可
后续数据处理过程中是否需要用到这些文件?
常规业务数据处理流程(包括数仓加工、数据分析、数据同步等)都不需要用到这部分文件,这些文件仅记录Spark作业的提交时序、运行状态等信息,仅当你需要排查Sink写入失败、数据丢失、作业耗时异常等问题时,才需要用到这些文件的内容定位根因。
内容的提问来源于stack exchange,提问作者Kenny_I
相关产品推荐
相关产品推荐

