2017-11-29 10 views
2

状況: DAG(日次ETLプロセス)には20のタスクがあります。一部のタスクは独立しており、ほとんどのタスクは依存関係を持っています。Apache Airflow「欲張り」DAG実行

問題: 独立したタスクが失敗した場合、空気の流れが全体DAGの実行を停止し、失敗したとして、それをマークします。

質問: すべての依存関係が満たされている限り、Airflowが強制的にDAGを実行し続けることは可能でしょうか?このように1つの独立したタスクが失敗しても、他のすべてのストリームの実行全体がブロックされることはありません。

このような些細で根本的な問題のように思えますが、他の誰もその行動に問題がないことに本当に驚きました。 (たぶん私は何かが欠けているかもしれません)

+1

これはバグのようです。 Airflow(1.8.2)の最新バージョンはありますか? –

+0

いいえ、私たちは1.8.0です。私はそれについて考えていたはずです。それを聞いてうれしいのは期待された動作ではありません。ありがとう! –

答えて

0

個々のオペレーターごとにトリガールールを設定できます。

すべての演算子には、生成されたタスクがトリガされるルールを定義するtrigger_rule引数があります。 trigger_ruleのデフォルト値はall_successで、「直上のすべてのタスクが成功したときにこのタスクをトリガする」と定義できます。ここで説明する他のすべてのルールは、直接親タスクに基づいており、タスクの作成中に任意の演算子に渡すことができる値です。

all_success: (default) all parents have succeeded 
all_failed: all parents are in a failed or upstream_failed state 
all_done: all parents are done with their execution 
one_failed: fires as soon as at least one parent has failed, it does not wait for all parents to be done 
one_success: fires as soon as at least one parent succeeds, it does not wait for all parents to be done 
関連する問題