Airflow中的CeleryExecutor并未在subdag中并行化任务

时间:2018-08-16 21:12:36

标签: airflow airflow-scheduler

我们使用的是Airflow:1.10.0,经过一些分析,为什么我们的某些ETL流程花了这么长时间,我们发现子数据使用SequentialExecutor代替了BaseExecutor,或者当我们配置CeleryExecutor

我想知道这是错误还是Airflow的预期行为。具有并行执行任务的功能没有任何意义,但是在某些特定类型的任务中,此功能会丢失。

Execution of our SugDag (Zoom in Subdag)

2 个答案:

答案 0 :(得分:6)

在subdags中使用SequentialExecutor是一种典型的模式,它的思想是您经常执行许多类似的相关任务,而不必一定要增加添加到celery中的队列等的开销。 Airflow文档中有关“子提示”的“其他提示”部分:https://airflow.apache.org/concepts.html#subdags

默认情况下,子子级设置为使用顺序执行器(请参见:https://github.com/apache/incubator-airflow/blob/v1-10-stable/airflow/operators/subdag_operator.py#L38),但是您可以更改它。

要使用celery执行器,请在subdag创建中添加以下内容:

from airflow.executors.celery_executor import CeleryExecutor
mysubdag = SubDagOperator(
    executor=CeleryExecutor()
    ...
)

答案 1 :(得分:0)

也许有点晚了,但是实现LocalExecutor对我有用。

from airflow.executors.local_executor import LocalExecutor

subdag = SubDagOperator(
  task_id=task_id,
  default_args=default_args,
  executor= LocalExecutor(),
  dag=dag
)