可以同时进行气流回填和调度吗?

时间:2019-08-11 21:57:37

标签: airflow airflow-scheduler

在这种情况下,我已经开始在特定时间每天获取一些计划的数据,因此我必须为这些数据创建ETL。

同时,当我仍在创建DAG来安排Airflow中的任务时。数据每天不断到达。因此,当我从今天开始运行DAG时,我想每天对其进行调度,并且还想回填过去在创建DAG时错过的所有数据。

我知道,如果我将start_date设置为数据开始到达的日期,则气流将从该日期开始回填,但是在那种情况下,我的DAG是否总是落后于当前日期?如何同时实现回填和计划?我需要为回填和计划创建单独的DAG /任务吗?

1 个答案:

答案 0 :(得分:0)

您需要考虑几件事。 1.您的每日数据是独立的还是下一次运行取决于上一次运行?

如果数据取决于以前的状态,则可以在Airflow中运行回填。

Airflow中的回填如何工作? 气流使您能够轻松运行DAG。经过DAG的过程称为回填。自开始以来,回填的过程实际上使Airflow取消了所有DAG的某些状态。

  

我知道,如果我将start_date用作数据的起始日期   开始到达的气流将从该日期开始回填,但是   那样的话,我的DAG是否会一直落后于当前日期?

是的,设置过去的起始日期是回填气流的正确方法。 不,如果您使用celery executer,这些作业将并行运行,并且最终会赶上当天,这显然取决于您的执行时间。

  

如何同时实现回填和计划?我会吗   需要创建单独的DAG /任务来进行回填和计划?

您无需执行任何其他操作即可同时实现计划和回填,Airflow会根据您的start_date来照顾好这两个

最后,如果此活动是我建议的一项任务,则可以离线(手动)将数据处理到airflow中,这将使您对执行有更多的控制权。 然后将补余任务标记为成功或以下

  1. 运行气流回填命令,如下所示:airflow backfill -m -s "2016-12-10 12:00" -e "2016-12-10 14:00" users_etl

此命令将为从12:00 PM到02:00 PM的所有计划创建任务实例,并将其标记为成功而不执行任何任务。确保将depends_on_past配置设置为False,这将使此过程快得多。完成后,将其设置回True

  1. 更简单地将start_date设置为当前日期