如何在 Apache Airflow 中重命名 DAG

How to rename a DAG in Apache Airflow

我最近几天一直在评估 Airflow 作为我们 ETL 工作流的可能替代工具,并在 Airflow 中重命名 DAG 时发现了一些有趣的行为。

如果我在名为 hello_world.py

的文件中有一个 dag
dag = DAG('hello_world', description='Simple DAG',
          schedule_interval='0 12 * * *',
          start_date=datetime(2017, 11, 1), catchup=True)

而这个 dag 在 11 月已经执行了 10 天,然后我决定我只是想将 dag 的名称更改为 'yet_another_hello_world' 例如 在同一文件中 hello_world.py

dag = DAG('yet_another_hello_world', description='Simple DAG',
          schedule_interval='0 12 * * *',
          start_date=datetime(2017, 11, 1), catchup=True)

我只是重命名了作业,没有更改业务逻辑等。当它被部署到 Airflow 中时,它会自动被拾取并注册为一个新作业,所以现在有 2 个作业在DAG 视图

由于 DAG 定义中的 catchup=True,调度程序会自动看到此更改并注册一个新作业 yet_another_hello_world 然后它继续回填从 11 月 1 日起丢失的执行。它还继续保留现有的 hello_world 工作。

最终,我希望这是对现有作业的重命名,而不是保留旧的 hello_world 作业。有没有办法向气流表明这是一个简单的重命名?

作为最佳实践,当您想要更改 dag 的名称 schedule_interval 或 start_date.

时,始终建议您创建一个新的 dag 文件