气流 - 使用上游任务执行多个下游任务

时间:2018-05-16 13:59:36

标签: airflow

好的,如果这是一个愚蠢的问题,我道歉,因为它似乎很明显,它应该工作。但我无法找到它的文档,正如我们在构建新的数据管道时检查我们的选项一样,我真的希望这是一个功能......

多个下游进程可以依赖于单个上游进程,其中上游进程只运行一次。换句话说,我可以一次提取一个表,然后将其加载到我的数据仓库,并且有多个依赖于该负载完成的聚合吗?

有关更多信息,我们尝试进行异步提取 - 加载 - 转换,其中启动提取,然后加载和转换一旦它们从提取中获得所需的表子集就完成。

2 个答案:

答案 0 :(得分:2)

如果我理解这个问题,是的,您可以将下游任务设置为依赖于上游任务的成功。

我们在很多情况下使用dummyOperators,类似于此示例DAG: enter image description here

在我们希望dummyOperator在下游任务启动之前先启动并执行某些操作的情况下。这样可以更轻松地清除失败的运行,同时我们可以简单地清除虚拟运算符和下游任务。

您可以使用depends_on_past=True参数在下游任务排队之前要求上游任务运行,否则可以根据上游任务中的逻辑跳过它们。

答案 1 :(得分:1)

在我看来,这就像通常的DAG一样,有着不同寻常的措辞。我理解所需的结构:

extract_table_task \
                   |- task1_do_stuff
                   |- task2_do_some_other_stuff
                   |- task3_...

或者在气流代码中:

extract_table_task.set_downstream(task1_do_stuff)
extract_table_task.set_downstream(task2_do_some_other_stuff)
extract_table_task.set_downstream(task3_...)

然后确保为您的工作流程选择正确的触发规则,例如如果某些任务应该运行,即使出现问题:https://airflow.apache.org/concepts.html#trigger-rules