最近我已经测试气流这么多的运行airflow trigger_dag <my-dag>
时有一个问题execution_date
。airflow trigger_dag execution_date是第二天,为什么?
我已经了解到,execution_date
是不是我们认为在首次从here:
气流被开发作为ETL需求的解决方案。在ETL世界中, 通常会汇总数据。所以,如果我想总结数据 2016年2月19日,我将在2016年2月20日午夜GMT,这将所有数据之后立即 为2016年2月19日变为可用做。
start_date = datetime.combine(datetime.today(),
datetime.min.time())
args = {
"owner": "xigua",
"start_date": start_date
}
dag = DAG(dag_id="hadoopprojects", default_args=args,
schedule_interval=timedelta(days=1))
wait_5m = ops.TimeDeltaSensor(task_id="wait_5m",
dag=dag,
delta=timedelta(minutes=5))
上面的代码是我日常工作的一部分开始,第一项任务就是前实际工作等待5分钟一个TimeDeltaSensor,所以这意味着我的DAG将在2016-09-09T00:05:00
,2016-09-10T00:05:00
触发...等等。
在Web UI中,我可以看到像scheduled__2016-09-20T00:00:00
之类的东西,并且任务在2016-09-21T00:00:00
上运行,根据ETL
模型,这似乎是合理的。
但是有一天我的dag没有被触发,原因不明,所以我手动触发它,如果我在2016-09-20T00:10:00
上触发它,那么TimeDeltaSensor将在运行前等到2016-09-21T00:15:00
。
这不是我想要的,我希望它不会在第二天运行在2016-09-20T00:15:00
,我试过通过execution_date
到--conf '{"execution_date": "2016-09-20"}'
,但它不起作用。
我应该如何处理这个问题?
$ airflow version
[2016-09-21 17:26:33,654] {__init__.py:36} INFO - Using executor LocalExecutor
____________ _____________
____ |__()_________ __/__ /________ __
____ /| |_ /__ ___/_ /_ __ /_ __ \_ | /|//
___ ___ |/_/ _ __/ _// /_/ /_ |/ |//
_/_/ |_/_/ /_/ /_/ /_/ \____/____/|__/
v1.7.1.3
我不认为这是'start_date'问题,我haved圆润我'start_date'到一天的午夜,我的问题是,'execute_date '当dag被外部触发时被设置到第二天,对此我认为这是不合理的,就像我上面所说的那样。 –
我明白要安排的ETL风格,但我该如何解决我的问题:由于不明原因,我的DAG没有触发,我可以在'execution_date'触发它,除了'trigger_dag'子命令,我可以想'回填',那么如果是这种情况,我们为什么还需要'trigger_dag',这是无稽之谈? –
您是否有计划程序正在运行? '气流调度器' – mistercrunch