【发布时间】:2020-12-07 11:07:17
【问题描述】:
我有一个 DAG,它已经运行了十多年的任务。现在我需要在开始的时候再增加一年。我用谷歌搜索了一下,建议在新的 dag_id 下执行此操作。因为旧 DAG 已经在指定的执行日期范围内运行,所以我想将新 DAG 中的那些标记为成功。如何以方便的方式存档?
提前致谢。本周有一个美好的开始。
【问题讨论】:
我有一个 DAG,它已经运行了十多年的任务。现在我需要在开始的时候再增加一年。我用谷歌搜索了一下,建议在新的 dag_id 下执行此操作。因为旧 DAG 已经在指定的执行日期范围内运行,所以我想将新 DAG 中的那些标记为成功。如何以方便的方式存档?
提前致谢。本周有一个美好的开始。
【问题讨论】:
Airflow 的 backfill feature 旨在完全按照您的意愿行事。
也就是说,并不是每个人都喜欢使用该功能。例如,如果您的 dag 通常是一个小时工作,那么以小时为单位回填几年的数据可能真的效率很低。
因此,出于各种原因,创建一个临时的“回填”dag 并不是一个坏方法。
为了清楚起见,“回填” dag 我指的是您用于目的回填的 dag,而不使用气流回填功能。
对于您的“回填”dag,使用 DAG 参数 start_date 和 end_date 来控制 dag 将为其创建 dag 运行的 execution_date 的范围。
然后,在您的“回填”dag 完成所有运行后,您可以将其删除。 Airflow 不会知道旧的任务实例现在已回填,但您可能并不关心这一点。如果这样做,您可以在元存储数据库中手动更新dag_id。否则,您的“旧” dag 具有最近时期的正确元数据。
【讨论】: