我最近几天一直在评估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这只是一个简单的重命名?