首页/数据/数据工程与 ETL 速查/文件到达触发与完成标记
本包目录(311 条)
管道基础52 条
Kafka64 条调度与编排40 条数仓建模52 条数据质量50 条CDC 与同步53 条

文件到达触发与完成标记

文件类批次的可靠触发依赖“完成标记”:要么源端先写临时文件再重命名,要么用 _SUCCESS/清单文件标记批次结束,避免读到半截文件。

问题文件还在写就被下游读到,产生脏数据
手法临时目录 + 原子重命名;或 _SUCCESS 标记
扫描方式定时扫描目录并与已处理清单比对

原子落地约定

原子落地约定
1) 可写方先写 /landing/_tmp/orders_20261011.csv
2) 写完后 rename 到 /landing/orders/orders_20261011.csv
   同一文件系统内 rename 是原子操作
3) 下游只扫描正式目录,看到文件即视为完整

Spark 写入的 _SUCCESS 标记

Spark 写入的 _SUCCESS 标记
Hive/Spark 写目录完成后会在目录内生成 _SUCCESS 文件;
调度判断该文件存在再触发下游,可避免半写入被消费。
处理完的文件要归档或记录清单,否则轮询会重复处理同一批文件。

易错点

  • 跨文件系统 rename 不是原子操作,临时目录与正式目录必须同盘同挂载点
  • 只判断“目录非空”就开始消费,遇到多文件批次会漏掉后到的文件

数据来源与参考

  • Apache Spark 官方文档:Saving to Hive/文件系统输出约定
  • 行业通用文件批次落地规范
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌