如何在Apache Airflow中按需单独运行DAG特定任务并控制上下游?
Apache Airflow 单个任务按需运行及上下游控制方案
Airflow完全支持按需临时运行单个任务,并且可以灵活控制是否连带其上游或下游任务执行,实现类似dbt CLI中dbt run --select +model_name+的效果,具体操作方式如下:
一、UI操作方式
- 登录Airflow Web UI,定位到目标DAG,进入Graph View或Tree View页面
- 选中目标任务节点,点击节点右上角操作按钮(或右键节点),选择Trigger Task
- 在弹出的配置窗口中,根据需求选择:
- 仅运行当前任务:直接触发,不关联上下游
- 连带上游任务:勾选"Include Upstream",会先运行该任务的所有上游依赖任务
- 连带下游任务:勾选"Include Downstream",当前任务完成后自动触发所有下游任务
- 同时连带上下游:同时勾选两个选项,实现类似dbt
+model_name+的全链路关联运行
二、CLI命令方式
通过Airflow CLI可以更灵活地批量或脚本化执行,核心命令是airflow tasks run,支持以下参数控制上下游:
- 仅运行单个任务:
airflow tasks run <dag_id> <task_id> <execution_date> - 连带上游任务执行:
airflow tasks run <dag_id> <task_id> <execution_date> --include-upstream - 连带下游任务执行:
airflow tasks run <dag_id> <task_id> <execution_date> --include-downstream - 同时连带上下游任务(类似dbt
+model_name+):airflow tasks run <dag_id> <task_id> <execution_date> --include-upstream --include-downstream
注意:如果只是用于调试任务逻辑,无需记录正式DAG运行记录,可以使用
airflow tasks test命令,该命令不会写入元数据库,直接在本地执行任务:airflow tasks test <dag_id> <task_id> <execution_date>
补充说明
- 执行时需要指定
execution_date,可以使用当前时间(如$(date -Iseconds))或任意合法的时间格式 - 对于Airflow 2.x版本,上述命令均适用;1.x版本可替换为
airflow run(功能类似)
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

