最近几天,我一直在评估Airflow作为我们ETL工作流程的一种可能的替代工具,当在Airflow中将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 View 中现在有2个作业可见
  • hello_world
  • yet_another_hello_world

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

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

    最佳答案

    最佳做法是,始终建议在要更改dag的名称,schedule_interval或start_date时创建一个新的dag文件。

    关于airflow - 如何在Apache Airflow中重命名DAG,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47804377/

    10-13 06:32