依赖类型是什么
调度里的「依赖」不只是让上游任务先跑完。按可靠程度可以分成四类:时间依赖最强壮也最脆弱(到点就跑,不管数据在不在)、任务依赖把上下游串起来、数据依赖等到真正需要的分区或文件就绪、外部依赖等待本系统之外的人或系统。链路越关键,越应该往数据依赖靠;反过来,只在时间上对齐的链路,上游一慢就会算错。
四类依赖对比
| 类型 | 说明 | 示例 |
|---|---|---|
| 时间依赖 | 固定时间点触发 | 每天 02:00 跑 |
| 任务依赖 | 上游任务成功才跑 | DAG 内上下游 |
| 数据依赖 | 上游数据就绪(分区、文件到达) | 等 dt 分区可查 |
| 外部依赖 | 外部系统回调或人工确认 | 等上游团队通知 |
| 混合依赖 | 时间打底 + 数据校验兜底 | 02:00 启动,等分区出现再执行 |
基本信息
| 常见引擎 | Airflow(Sensor、TriggerDagRunOperator)、DolphinScheduler 等 |
|---|---|
| 数据就绪判定 | 分区存在、_SUCCESS 文件、行数阈值 |
| 外部依赖兜底 | 超时告警、人工放行开关 |
| 跨 DAG 依赖 | 用数据集、触发器或 Sensor 实现 |
| 失败语义 | 依赖不满足应阻塞而不是跳过 |
依赖实现方式(示意)
依赖实现方式(示意)
任务依赖:DAG 边 / 跨 DAG Sensor
数据依赖:查询分区是否存在、检查 _SUCCESS 文件
外部依赖:回调接口 + 超时兜底告警典型使用场景
- 跨团队数据交接:等对方表的分区就绪再开始加工,而不是等一个约定时间
- 上游多路合并:多个上游任一到齐即可开始,用触发规则而不是靠时差
- 人工审核环节:报表发布前等业务确认,设置超时后自动提醒
- 外部接口回填:等第三方文件落到对象存储,用 Sensor 轮询取代 sleep
- 回归与补数:补数任务同样要满足数据依赖,避免在缺数时重算
只有时间依赖的链路,上游延迟时会消费到不完整数据;关键链路至少加数据就绪校验。
Sensor 类依赖要设合理的超时与轮询间隔:轮询过密会打爆元数据服务或上游接口,超时过长则故障被拖延到下游才发现。