假设我具有以下DAG依赖项:
/> DAG B -->....
/
/
DAG A ---> DAG C -->...
\
\
\> DAG D -->...
这些DAG每天运行,并且DAG B,C,D分别消耗DAG A的输出。
[如果DAG A失败(例如Spark作业有错误,并且我们想在修复后重新执行它),如何确保我们也重新运行DAG B,C,D等,以便现在它们以固定状态运行DAG A输出?可以自动完成吗?
您可以有单独的Main DAG(controller_dag),然后使用TriggerDagRunOperator触发不同的DAG。
使用TriggerDagRunOperator的任务之间的依赖关系可以通过以下方式设置:
dag_a >> [dag_b, dag_c, dag_d] >> ...
您可以为此使用TriggerDagRunOperatorhttps://www.astronomer.io/guides/trigger-dag-operator/
您还可以考虑使用SubDAGOperator将这些DAG合并为一个DAG。在这种情况下,子DAG b,c,d可以取决于子DAG a。