最近我已經測試氣流這麼多的運行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