如果输入数据发生变化,如何重新运行 Airflow 作业
How to rerun Airflow job if there has been a change in input data
情况:
- 我有一个上游作业,它从 GCS 复制的 pub/sub 主题 (A) 中读取事件,转换它们,并根据事件时间将数据转储到分区中。
- 管道的下一步涉及将数据与另一个数据流 (B) 匹配并构建漏斗。
- 5% 的案例数据[主题 A] 可能会延迟 - 比如说 3 小时。
任务:
- 当输入数据发生变化[数据延迟]时,如何在特定时间重新运行漏斗构造作业?
我知道 Apache Falcon 支持这样的要求。但我想知道 Airflow 是否支持它。
当然可以。 Airflow在这方面大放异彩。
Airflow 有一个“回填”命令,可用于此目的。
Airflow 的所有任务都应该以“幂等”的方式设计(因此您可以在给定的时间间隔内重新运行它们,它们基本上应该替换之前的数据 运行相同数据区间)。
Backfill 目前只能使用 CLI 来使用(也有关于将其引入 UI 的讨论)。
https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#backfill
它的好处是它还会自动触发所有后续的相关任务,因此 Airflow 会完成所有繁重的工作以确定需要重新 运行 以防您决定回填一些数据间隔的一项任务 - 它将重新运行之后的所有相关任务对于这些间隔也是如此。
情况:
- 我有一个上游作业,它从 GCS 复制的 pub/sub 主题 (A) 中读取事件,转换它们,并根据事件时间将数据转储到分区中。
- 管道的下一步涉及将数据与另一个数据流 (B) 匹配并构建漏斗。
- 5% 的案例数据[主题 A] 可能会延迟 - 比如说 3 小时。
任务:
- 当输入数据发生变化[数据延迟]时,如何在特定时间重新运行漏斗构造作业?
我知道 Apache Falcon 支持这样的要求。但我想知道 Airflow 是否支持它。
当然可以。 Airflow在这方面大放异彩。
Airflow 有一个“回填”命令,可用于此目的。
Airflow 的所有任务都应该以“幂等”的方式设计(因此您可以在给定的时间间隔内重新运行它们,它们基本上应该替换之前的数据 运行相同数据区间)。
Backfill 目前只能使用 CLI 来使用(也有关于将其引入 UI 的讨论)。
https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#backfill
它的好处是它还会自动触发所有后续的相关任务,因此 Airflow 会完成所有繁重的工作以确定需要重新 运行 以防您决定回填一些数据间隔的一项任务 - 它将重新运行之后的所有相关任务对于这些间隔也是如此。