いくつかのpythonスクリプトをオーケストレーションするためにエアフローを使用しています。いくつかのサブダグが実行される「メイン」DAGがあります。私のメインDAGは次の概要に従って実行されるはずです:
次の行を使用して、メインのDAGでこの構造に到達できました。
etl_internal_sub_dag1 >> etl_internal_sub_dag2 >> etl_internal_sub_dag3
etl_internal_sub_dag3 >> etl_adzuna_sub_dag
etl_internal_sub_dag3 >> etl_adwords_sub_dag
etl_internal_sub_dag3 >> etl_facebook_sub_dag
etl_internal_sub_dag3 >> etl_pagespeed_sub_dag
etl_adzuna_sub_dag >> etl_combine_sub_dag
etl_adwords_sub_dag >> etl_combine_sub_dag
etl_facebook_sub_dag >> etl_combine_sub_dag
etl_pagespeed_sub_dag >> etl_combine_sub_dag
私が気流にしたいことは、最初にetl_internal_sub_dag1
そうして etl_internal_sub_dag2
、次にetl_internal_sub_dag3
。 etl_internal_sub_dag3
終了しましたetl_adzuna_sub_dag
、etl_adwords_sub_dag
、etl_facebook_sub_dag
、etl_pagespeed_sub_dag
並列実行します。最後に、これらの最後の4つのスクリプトが完了したら、etl_combine_sub_dag
走る。
ただし、メインのDAGを実行すると、etl_adzuna_sub_dag
、etl_adwords_sub_dag
、etl_facebook_sub_dag
、etl_pagespeed_sub_dag
は1つずつ実行され、並行して実行されません。
質問:スクリプトを確認するにはどうすればよいですかetl_adzuna_sub_dag
、etl_adwords_sub_dag
、etl_facebook_sub_dag
、etl_pagespeed_sub_dag
は並行して実行されますか?
Edit:My default_args
とDAG
は次のようになります。
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': start_date,
'end_date': end_date,
'email': ['[email protected]'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 0,
'retry_delay': timedelta(minutes=5),
}
DAG_NAME = 'main_dag'
dag = DAG(DAG_NAME, default_args=default_args, catchup = False)
LocalExecutor
を使用する必要があります。
設定(airflow.cfg
)を確認してください。タスクをシリアルに実行するSequentialExectuor
を使用している可能性があります。
Airflowは、バックエンドデータベースを使用してメタデータを格納します。 airflow.cfg
ファイルを確認し、executor
キーワードを探します。デフォルトでは、AirflowはSequentialExecutor
を使用します。これは、何があっても順次タスクを実行します。したがって、Airflowがタスクを並列で実行できるようにするには、PostgesまたはMySQLでデータベースを作成し、それをairflow.cfg
(sql_alchemy_conn
param)で構成してから、executorをLocalExecutor
に変更する必要がありますairflow.cfg
を実行してから、airflow initdb
を実行します。
LocalExecutor
を使用するには、バックエンドデータベースとしてSQLiteではなくPostgresまたはMySQLを使用する必要があることに注意してください。
詳細: https://airflow.incubator.Apache.org/howto/initialize-database.html
Airflowの実際のテストドライブを利用する場合は、実際のデータベースバックエンドをセットアップし、LocalExecutorに切り替えることを検討する必要があります。 Airflowは、優れたSqlAlchemyライブラリを使用してメタデータと対話するように構築されているため、SqlAlchemyバックエンドとしてサポートされているデータベースバックエンドを使用できるはずです。 MySQLまたはPostgresの使用をお勧めします。