假设我有一个带有任务的流程:
T1 >> T2 >> T3
进程需要为一组 id [1,2,3] 运行:
process_run_with_id1
process_run_with_id2
process_run_with_id3
我可以创建具有多个任务组的单个 DAG,其中每个任务组代表要为该 ID 运行的一组任务:
DAG = > TG_for_1, TG_for_2, TG_for_3
或多个 DAG
DAG_for_1 = t1 >> t2 >> t3
DAG_for_2 = t1 >> t2 >> t3
DAG_for_3 = t1 >> t2 >> t3
除了视觉上的不同,这两种方法之间有什么区别(以及我是通过一个文件创建 DAG 还是多个 DAG 文件来动态创建 DAG)?
答案 0 :(得分:0)
您可以通过跨 DAG 拆分任务或将它们加入单个 DAG 来获得相同的结果,但这更多的是您定义结果的方式。 您也可以在单个文件中编写整个软件,但将所有内容放在同一个文件中是否明智?可能不会。
有一些规则可以帮助您区分添加任务的任务组与创建单独的 DAG。
支持将带有任务组的任务添加到当前 DAG 的观点:
支持将任务从当前 DAG 分离到另一个 DAG 的观点:
总的来说,我认为最重要的是要理解任务组只是一个漂亮的 UI 表示。这意味着如果由于任何原因 TG_for_1
需要更长的时间来执行,它可能会导致调度新的 DAG 运行延迟,这意味着它不仅会影响 TG_for_1
中的任务,还会影响以下任务TG_for_2
和 TG_for_3
的运行将被延迟。因此,您希望将任务“绑定”到同一个 DAG 中,前提是它们可以一起运行并在出现问题时一起“受苦”。