过去几天我一直在评估Airflow作为我们ETL工作流程的可能替代工具,并在Airflow中重命名DAG时发现了一些有趣的行为。
如果我在一个名为 hello_world.py
的文件中有一个dagdag = 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视图中可以看到2个作业
根据DAG定义中的 catchup = True ,调度程序会自动查看此更改并注册新作业 yet_another_hello_world 然后继续从第1次回填缺少的执行十一月它还继续保持现有的 hello_world 作业。
最终,我希望这是对现有工作的重命名,而不是保留旧的hello_world工作。有没有办法向气流表明这是一个简单的重命名?
答案 0 :(得分:1)
作为最佳做法,当您想要更改dag的名称,schedule_interval或start_date时,始终建议您创建一个新的dag文件。