Dagrunを実行すると、Airflow UIの「グラフビュー」に、実行された各ジョブの詳細が表示されます。
JobIDは「scheduled__2017-04-11T10:47:00」のようなものです。
各Job/Dagrunにかかった時間を維持する追跡とログの作成のために、このJobIDが必要です。
だから私の質問は実行中の同じDAG内でJobIDを取得するにはどうすればよいですかです。
ありがとう、チェタン
この値は実際にはrun_id
と呼ばれ、コンテキストまたはマクロを介してアクセスできます。
python演算子では、これはコンテキストを介してアクセスされ、bash演算子では、これはbash_command
フィールドのjinjaテンプレートを介してアクセスされます。
マクロで利用できるものの詳細:
https://airflow.Apache.org/docs/stable/macros.html
ジンジャの詳細:
https://airflow.Apache.org/docs/stable/concepts.html#jinja-templating
from airflow.models import DAG
from datetime import datetime
from airflow.operators.bash_operator import BashOperator
from airflow.operators.python_operator import PythonOperator
dag = DAG(
dag_id='run_id',
schedule_interval=None,
start_date=datetime(2017, 2, 26)
)
def my_func(**kwargs):
context = kwargs
print(context['dag_run'].run_id)
t1 = PythonOperator(
task_id='python_run_id',
python_callable=my_func,
provide_context=True,
dag=dag
)
t2 = BashOperator(
task_id='bash_run_id',
bash_command='echo {{run_id}}',
dag=dag)
t1.set_downstream(t2)
このDAGを例として使用し、各オペレーターのログを確認すると、ログにrun_id
が出力されているはずです。