2017-08-04 6 views
0

私はセラーリーエグゼキュータを使用しています。この設定はdockerfileです。Airflowでの展開の仕組みは?

ダグを/usr/local/airflow/dagsディレクトリにスケジューラのコンテナに展開しています。

私はコマンドを使用して、私のDAGを実行することができるよ:

$ docker exec airflow_webserver_1 airflow backfill mydag -s 2016-01-01 -e 2016-02-01 

私のDAGは、単純なbashの演算子が含まれています

BashOperator(command = "test.sh" ...) 

オペレータはtest.shスクリプトを実行します。

test.shcallme.shのような他のファイルを参照する場合、「ファイルを見つけることができません」というエラーが表示されます。 myworkflowを実行している場合

e.g 
$ pwd 
/usr/local/airflow/dags/myworkflow.py 

$ ls 
myworkflow.py 
test.sh 
callme.sh 

$ cat test.sh 
echo "test file" 
./callme.sh 

$ cat callme.sh 
echo "got called" 

、test.shを呼び出すためのタスクが呼び出されたが、callme.shが見つからないために失敗しています。

これはわかりにくいです。コードリソースファイルを作業者またはエアフローの責任者と共有することは私の責任ですか?それが私のものなら、そうするために推奨されるアプローチは何ですか?私はそれがすべてのコンテナにマウントされているEFSを使用して見ているが、それは私に非常に高価に見えます。

答えて

0

セロリーエグゼキュータの場合、各ワーカーがジョブを実行するために必要なすべてのファイルを持っていることを確認することは、あなたの責任です。