在 Airflow 中,有哪些常用方法可以定义任务之间的依赖关系?请举例说明。
考察说明
考查对 Airflow 中任务依赖设置方式的掌握,以及是否能灵活运用不同方法。
回答思路
- 【回答框架 1】Airflow 中定义任务依赖的常用方式包括使用位运算符,如 task1 >> task2 表示 task2 依赖于 task1,task1 << task2 表示 task1 依赖于 task2,这种方式直观且易于阅读。
- 【回答框架 2】也可以使用 set_upstream 和 set_downstream 方法,例如 task2.set_upstream(task1) 等同于 task1 >> task2,task1.set_downstream(task2) 同样设置 task1 为 task2 的上游。
- 【回答框架 3】对于多个依赖,可以链式使用运算符,如 task1 >> [task2, task3] 表示 task2 和 task3 都依赖 task1,或者 [task1, task2] >> task3 表示 task3 依赖 task1 和 task2,结合列表可简化依赖设置。
- 【回答框架 4】更复杂的依赖关系可以使用交叉依赖,比如 task1 >> task2 >> task3 形成线性链,或使用列表和运算符组合来实现扇入扇出结构,满足不同工作流需求。
- 【关键点 1】常用位运算符 >> 和 << 快速设置依赖。
- 【关键点 2】使用 set_upstream 和 set_downstream 方法,代码可读性好。
- 【关键点 3】列表与运算符结合可设置多任务间的依赖关系。
- 【易错点 1】依赖关系定义错误会导致任务调度不符合预期,需检查 DAG 中任务是否全部连接。
- 【易错点 2】不要遗漏任务,未连接的孤立任务不会被执行或影响 DAG 正确性。