根据条件重新运行某些成功的气流任务

Rerun certain successful airflow task based on conditions

例如,我有一个任务 A、B 和 C 的 Dag。目前 C 依赖于 A 和 B。问题是,我正在尝试找出一种方法来 1) 运行 C 之后A 或 B 中的任何一个成功,这样 C 中的某些列将被刷新。 2)说A先完成,C成功执行了一次。现在B完成了。我现在如何再次触发 C 到 运行?这是让 c 运行 两次的理想行为。 C 可能比 A 和 B 有更多的 2 个依赖项。增量更新 C 并在满足更多条件后让它重新 运行 的方法是什么? 作业 A、B 和 C 是 Spark 作业或 Hive sql。非常感谢您的帮助。

  1. run C after either A or B is successful, so that some columns in C will be refreshed. 2) Say A was completed first, and C was executed successfully once. Now B is completed. How can I now trigger A to run once again?

答案在trigger rules中。我会考虑在 C 任务中使用 all_done 规则。通过这种方式,它将始终在 A 和 B 之后 运行(无论结果如何)。但是,如果所有任务都失败,这可能需要调整任务 C 才能正常工作。

How can I now trigger A to run once again? C might have more that 2 dependencies than A and B. What would be a way be incrementally update C and have it re-runable once more conditions are met?

为此,来自 Airflow Web UI:

  1. 将任务 C 标记为失败
  2. 使用“上游”和“失败”选项清除任务 C:

这应该重新运行所有失败的任务(A 或 B 或 C 上游的任何其他任务)以及 C(因为我们将其标记为失败)。