web-dev-qa-db-ja.com

>>オペレーターはAirflowでタスクの依存関係をどのように定義しますか?

私はApache Airflowチュートリアル https://github.com/hgrif/airflow-tutorial を実行していて、タスクの依存関係を定義するためのこのセクションに遭遇しました。

with DAG('airflow_tutorial_v01',
     default_args=default_args,
     schedule_interval='0 * * * *',
     ) as dag:

print_hello = BashOperator(task_id='print_hello',
                           bash_command='echo "hello"')
sleep = BashOperator(task_id='sleep',
                     bash_command='sleep 5')
print_world = PythonOperator(task_id='print_world',
                             python_callable=print_world)


print_hello >> sleep >> print_world

私を混乱させる線は

print_hello >> sleep >> print_world

Pythonで>>はどういう意味ですか?私はビット演算子を知っていますが、ここのコードに関連付けることはできません。

9
idazuwaika

Airflowはワークフローを有向非循環グラフとして表します。ワークフローとは、並列または順次に実行する必要がある任意の数のタスクです。 「>>」は、別のタスクの下流にタスクを設定するためのAirflow構文です。

Incubator-airflowプロジェクトリポジトリに分けて、airflowディレクトリのmodels.pyは、Airflowの高レベルの抽象化の多くの動作を定義します。必要に応じて他のクラスを掘り下げることができますが、質問に答えるのはBaseOperatorクラスです。 Airflowのすべてのオペレーターは、BaseOperatorから継承します。 BaseOperatorクラスの__rshift__メソッドは、タスクまたは別のDAGダウンストリームを設定するコンテキストでPython右シフト論理演算子を実装します。

実装 ここ を参照してください。

8
rob