如何在Apache Airflow中重命名DAG

12
我最近几天一直在评估Airflow作为我们ETL工作流的潜在替代工具,并发现了一些有趣的行为,当一个DAG在Airflow中被重命名时。如果我有一个在名为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中时,它会自动被识别并注册为一个新作业,因此在DAG视图中会看到两个作业:

  • hello_world
  • yet_another_hello_world

由于DAG定义中有catchup=True,调度器会自动检测到更改并注册一个新的作业yet_another_hello_world,然后继续补充11月1日开始缺失的执行。它还将保留现有的hello_world作业。

最终,我希望这只是一个对现有作业名称的更改,而不是保留旧的hello_world作业。有没有办法告诉airflow这只是一个简单的重命名?

1个回答

9

作为最佳实践,建议在想要更改DAG名称、调度间隔或启动日期时创建新的DAG文件。


4
谢谢回复。创建一个新文件和新的工作ID将确保我丢失以前工作执行的历史记录。如果可能的话,我想保留该历史记录在新的作业名称下。 - vcetinick
4
只需更改DAG ID,而不是作业ID。要查看特定DAG的历史记录,您可以从Airflow元数据库中将旧的DAG ID更改为新的DAG ID。 - sdikby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接