Airflow:回填历史运行彩雨伞7小时前发布关注私信0370 回填(Backfill)是为 DAG 的历史日期创建运行。Airflow 提供 CLI 和 REST API 来完成这项操作:指定 DAG、开始日期和结束日期后,Airflow 会按照 DAG 的调度规则,为该日期区间创建运行。 对于没有基于时间的调度规则的 DAG,回填没有意义。 控制数据重新处理 重新处理行为有三个选项: none:如果该逻辑日期已有运行,无论状态如何,都不再创建。 failed:如果该日期已有运行且状态为失败,则创建新的运行。 completed:如果该日期已有运行且状态为已完成或失败,则创建新的运行。 并发控制 可以为一次回填设置 max_active_runs,限制该回填中同时执行的 DAG 运行数量。回填的 max_active_runs 独立于 DAG 自身的 max_active_runs 设置生效。 运行顺序 可以反向执行回填,也就是优先处理较新的运行。对应的 CLI 选项是 --run-backwards。 预演 回填的预演选项会打印出本次回填考虑创建运行的日期。真正执行回填时是否创建这些运行,取决于选择的重新处理行为,以及该范围内已有运行届时的状态。 示例 可以通过 CLI 或界面创建回填。 CLI 命令示例: airflow backfill create --dag-id tutorial \ --from-date 2015-06-01 \ --to-date 2015-06-07 \ --reprocess-behavior failed \ --max-active-runs 3 \ --run-backwards \ --dag-run-conf '{"my": "param"}' 通过界面操作时,步骤如下: 进入 DAG 的详情页,点击 Trigger。 在弹窗中选择 Backfill。 填写表单: Date range:设置回填窗口的 From 与 To 逻辑日期时间。 Reprocess behavior:选择 Missing Runs(缺失运行)、Missing and Errored Runs(缺失及出错运行)或 All Runs(全部运行)。 Max active runs:限制此次回填的并发运行数。 Run backwards:优先执行最近的时间区间。 Advanced Config:可选地提供 JSON 格式的 dag_run.conf。 如果 DAG 已暂停,可以在同一窗口中通过 Unpause 恢复调度。 回填弹窗:浅色模式(官方原图) 分区 DAG 的回填 对于使用分区时间表的 DAG,例如 CronPartitionTimetable,回填同样使用 --from-date 与 --to-date。Airflow 会自动识别 DAG 是否按分区调度,并将日期范围解释为分区日期范围,为窗口中的每个分区创建一次 DAG 运行。 例如,回填 2026-02-18 到 2026-02-20 的分区: airflow backfill create --dag-id my_partitioned_dag \ --from-date 2026-02-18 \ --to-date 2026-02-20 并发仍通过通用的 --max-active-runs 选项控制。 © 版权声明文章版权归作者所有,未经允许请勿转载。THE END技术译文 喜欢就支持一下吧点赞0 分享QQ空间微博QQ好友海报分享复制链接收藏
暂无评论内容