在 DAG 运行期间动态生成 DAG - Airflow

Posted

技术标签:

【中文标题】在 DAG 运行期间动态生成 DAG - Airflow【英文标题】:Dynamically generate a DAG during a DAG Run - Airflow 【发布时间】:2021-12-27 17:02:42 【问题描述】:

我想知道您是否可以在 DAG 运行中轻松动态地生成 DAG,例如:

DAG A 将是:

    做一些数据计算 根据之前的结果生成 DAG B 将 DAG B 装入气流 DagBag DAG B 的 TriggerDagRunOperator 最后一个 DAG B 任务的外部任务传感器。

干杯,

【问题讨论】:

【参考方案1】:

这是可能的。您需要生成一个文件,该文件在解析时会生成 DAG B。您不能只生成 DAG 对象作为 DAG A 的一部分。您将需要对所有 Airflow 组件(调度程序、网络服务器和工作程序)中的 DagBag 文件夹的写入权限)。另外,在使用 TriggerDagRun Operator 触发 DAG B 文件之前,请留出一些时间来解析它。

所有这一切都有点老套。 AIP-42 正在开发中,这将允许根据其他结果修改 DAG 中的任务,我认为这将有助于您获得所需的效果。

【讨论】:

以上是关于在 DAG 运行期间动态生成 DAG - Airflow的主要内容,如果未能解决你的问题,请参考以下文章

Spark 动态 DAG 比硬编码的 DAG 慢很多

DP入门——DAG上的动态规划

DAG上的动态规划之嵌套矩形问题

UVa 103 Stacking Boxes --- DAG上的动态规划

环境变量名称不会被气流 DAG 中的值替换 [重复]

让 Airflow 表现得像 Luigi:如果任务的输出只需要获得一次,如何防止任务在 DAG 的未来运行中重新运行?