首页/数据/数据工程与 ETL 速查/跨 DAG 依赖与就绪检查

跨 DAG 依赖与就绪检查

跨 DAG 依赖有两类思路:用 ExternalTaskSensor 等上游指定运行完成,或让下游直接检查上游产出(分区是否就绪、标记文件是否存在);后者更抗上下游调度频率不一致。

Sensor 方式ExternalTaskSensor 匹配同一逻辑日期
产出检查查分区或标记文件,不依赖调度器状态
时间对齐频率不同需自定义日期映射函数
数据集Airflow Dataset 也可触发下游

ExternalTaskSensor 用法

ExternalTaskSensor 用法
from airflow.sensors.external_task import ExternalTaskSensor

wait_upstream = ExternalTaskSensor(
    task_id="wait_upstream",
    external_dag_id="ods_orders",
    external_task_id="load",
    allowed_states=["success"],
    timeout=3600,
    mode="reschedule",
)
上游任务改名会让 Sensor 永远等不到;发布上游前先搜一遍有哪些下游在依赖它。

易错点

  • 上下游频率不同(上游每小时、下游每天)时 Sensor 等不到对应逻辑日期
  • 只等上游任务成功、不等数据落地,仍可能读到空分区

数据来源与参考

  • Apache Airflow 官方文档:ExternalTaskSensor
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌