首页/数据/数据工程与 ETL 速查/依赖类型:时间/任务/数据/外部

依赖类型:时间/任务/数据/外部

依赖不只是“上游跑完”:按时间触发最弱,按上游任务状态稍好,按数据就绪(分区/文件/表行数)最可靠;外部依赖(第三方回调、人工确认)要设置兜底超时。

依赖类型是什么

调度里的「依赖」不只是让上游任务先跑完。按可靠程度可以分成四类:时间依赖最强壮也最脆弱(到点就跑,不管数据在不在)、任务依赖把上下游串起来、数据依赖等到真正需要的分区或文件就绪、外部依赖等待本系统之外的人或系统。链路越关键,越应该往数据依赖靠;反过来,只在时间上对齐的链路,上游一慢就会算错。

四类依赖对比

类型说明示例
时间依赖固定时间点触发每天 02:00 跑
任务依赖上游任务成功才跑DAG 内上下游
数据依赖上游数据就绪(分区、文件到达)等 dt 分区可查
外部依赖外部系统回调或人工确认等上游团队通知
混合依赖时间打底 + 数据校验兜底02:00 启动,等分区出现再执行

基本信息

常见引擎Airflow(Sensor、TriggerDagRunOperator)、DolphinScheduler 等
数据就绪判定分区存在、_SUCCESS 文件、行数阈值
外部依赖兜底超时告警、人工放行开关
跨 DAG 依赖用数据集、触发器或 Sensor 实现
失败语义依赖不满足应阻塞而不是跳过

依赖实现方式(示意)

依赖实现方式(示意)
任务依赖:DAG 边 / 跨 DAG Sensor
数据依赖:查询分区是否存在、检查 _SUCCESS 文件
外部依赖:回调接口 + 超时兜底告警

典型使用场景

  • 跨团队数据交接:等对方表的分区就绪再开始加工,而不是等一个约定时间
  • 上游多路合并:多个上游任一到齐即可开始,用触发规则而不是靠时差
  • 人工审核环节:报表发布前等业务确认,设置超时后自动提醒
  • 外部接口回填:等第三方文件落到对象存储,用 Sensor 轮询取代 sleep
  • 回归与补数:补数任务同样要满足数据依赖,避免在缺数时重算
只有时间依赖的链路,上游延迟时会消费到不完整数据;关键链路至少加数据就绪校验。
Sensor 类依赖要设合理的超时与轮询间隔:轮询过密会打爆元数据服务或上游接口,超时过长则故障被拖延到下游才发现。

易错点

  • 用 sleep 固定分钟数等待上游,上游变慢就出错、变快就浪费
  • 跨团队依赖没有超时告警,会一直「等待中」无人发现
  • 数据依赖只检查分区目录存在而不校验是否有数据,空分区照样往下跑
  • 外部依赖被当成自动可解,实际上人工确认环节没人负责
  • 把依赖写在同一天的时点逻辑里,补数时依赖关系全部错位

数据来源与参考

  • 行业通用调度依赖模型(Airflow/DolphinScheduler 依赖能力对比)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌