4

Airflow を使用して非常に単純な ETL DAG を実行したいとします。DB2 での最後の挿入時刻をチェックし、DB1 から DB2 に新しい行があればロードします。

理解できる要件がいくつかあります。

  1. 1 時間ごとにスケジュールされ、最初の数回の実行は 1 時間以上続きます
    • 例えば。最初の実行では 1 か月のデータを処理する必要があり、72 時間続きます。
    • 2 回目の実行では最後の 72 時間を処理する必要があり、7.2 時間続きます。
    • 3 番目のプロセスは 7.2 時間かかり、1 時間以内に終了します。
    • それ以降は毎時実行されます。
  2. DAG の実行中は、次の DAG を開始せずにスキップします。
  3. トリガー イベントを過ぎても DAG が開始されなかった場合は、その後開始しないでください。
  4. 他の DAG もあり、DAG は個別に実行する必要があります。

これらのパラメーターと演算子は少しわかりにくいと思いますが、それらの違いは何ですか?

  • depends_on_past
  • catchup
  • backfill
  • LatestOnlyOperator

どちらを使用する必要があり、どの LocalExecutor を使用する必要がありますか?

Ps。すでに非常によく似たスレッドがありますが、使い尽くすことはありません。

4

3 に答える 3

5

DAG max_active_runs = 1 と catchup = False を組み合わせると、これが解決されます。

于 2018-03-02T05:59:03.460 に答える