AirFlow: Как установить большое количество внешних зависимостей в одной строке? - PullRequest
0 голосов
/ 15 ноября 2018

Я читаю этот вопрос , пытаясь реализовать зависимости от задач других DAG s. В этом примере зависимость записывается как:

ExternalTaskSensor(
    task_id='wait_for_the_first_task_to_be_completed',
    external_dag_id='a',
    external_task_id='first_task',
    dag=dag) >> \

В моем хранилище данных одна таблица может зависеть от сотен задач. Используя этот формат, он сгенерирует 2*number of dependencies строк кодов. Это действительно неприемлемо, есть ли лучший выбор?

Например, в Azkaban я могу написать несколько зависимостей следующим образом:

dependencies = dag1.task1, dag2.task4, dag2.task5, DAG3.task2, etc...

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 15 ноября 2018

Вы можете создавать свои датчики в цикле и устанавливать зависимости внутри него. Я думаю, что это чище, но я не уверен, соответствует ли это вашему требованию в отношении количества кода по мере увеличения числа зависимостей.

Пример:

dependencies = [('dag1', 'task1'), ('dag2', 'task4'), ('dag2', 'task5'), ('dag3', 'task2')]

other_task = PythonOperator(...)

for dag_id, task_id in dependencies:
    sensor = ExternalTaskSensor(
        task_id='wait_for_{0}.{1}'.format(dag_id, task_id),
        external_dag_id=dag_id,
        external_task_id=task_id,
        dag=dag)
    sensor >> other_task
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...