过去几天,我一直在评估 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)
Run Code Online (Sandbox Code Playgroud)
这个 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)
Run Code Online (Sandbox Code Playgroud)
我只是对作业进行重命名,而不是更改业务逻辑等。当它部署到 Airflow 中时,它会被自动选取并注册为新作业,因此现在在 DAG 视图中可以看到 2 个作业
由于 DAG 定义中的catchup=True,调度程序会自动看到此更改并注册一个新作业Yet_another_hello_world,然后它会继续回填从 11 月 1 日起丢失的执行。它还继续保持现有的hello_world作业完好无损。
最终,我希望这是对现有作业的重命名,而不是保留旧的 hello_world 作业。有没有办法向气流表明这是一个简单的重命名?
作为最佳实践,当您想要更改 dag 的名称、schedule_interval 或 start_date 时,始终建议创建一个新的 dag 文件。
| 归档时间: |
|
| 查看次数: |
4619 次 |
| 最近记录: |