2016-08-09 5 views
1

何らかの理由で、エアフローが週単位のスケジュール間隔でダグの最新の実行をトリガしていないようです。エアフローが最新の実行に戻ってこない

現在の日付:

$ date 
$ Tue Aug 9 17:09:55 UTC 2016 

DAG:

from datetime import datetime 
from datetime import timedelta 

from airflow import DAG 
from airflow.operators.bash_operator import BashOperator 

dag = DAG(
    dag_id='superdag', 
    start_date=datetime(2016, 7, 18), 
    schedule_interval=timedelta(days=7), 
    default_args={ 
     'owner': 'Jon Doe', 
     'depends_on_past': False 
    } 
) 

BashOperator(
    task_id='print_date', 
    bash_command='date', 
    dag=dag 
) 

あなたは4 DAGの合計は、スケジューラとして実行期待したいファイル名を指定して実行スケジューラ

$ airflow scheduler -d superdag 

が/ 7のために埋め戻す必要があります18日、7/25日、8/1日、および8/8日である。 ただし、最後の実行はスケジュールされていません。

Airflow DAG Runs

enter image description here

EDIT 1:

私はVineetは、それは私の問題を説明していないようだが、ことを理解しています。

上記の私の例では、DAGの開始日が

  • まずDAGの実行7月18日です:7月18日
  • 第二DAGラン:7月25日
  • サードDAGラン:8月1日
  • 4回目のDAG実行:8月8日(実行されない)

ここで、各DAG実行は前週のデータを処理します。

今日は8日目ですが、先週のデータ(8月1日から8月8日まで)を処理する8月8日の実行日を使用して4番目のDAG実行が実行されると予想されますが、そうではありません。

答えて

2

気流は常に前の期間の予定です。 8月9日に毎日実行するように予定されているダグがある場合、8月8日にexecution_dateで実行をスケジュールします。同様に、スケジュール間隔が週単位である場合、8月9日には1週間前、すなわち8月2日にスケジュールされますが、これは8月9日に実行されます。これは単に気流の簿記です。あなたは気流のwiki(https://cwiki.apache.org/confluence/display/AIRFLOW/Common+Pitfalls)でこれを見つけることができます:

エアフローは、ETLのニーズのためのソリューションとして開発された実行日を理解します。 ETLの世界では、通常、データを要約します。したがって、2016-02-19のデータを要約するとすれば、2016-02-20 GMTの午前0時20分にそれを行います.2016-02-19のすべてのデータが利用可能になった直後です。 この日付は、JinjaとPython呼び出し可能コンテキストの両方で、ここに記載されているような多くの形式で使用できます。注意dsはdate_stringを参照しています。日付の開始は一部の人には混乱を招く可能性があります。

関連する問題