Apache Воздушный поток: вопрос о Dynami c Задачи и параллелизм - PullRequest
0 голосов
/ 14 марта 2020

Меня попросили написать более "профессиональную" версию сценария ETL. Под профессионалом я подразумеваю: контроль (ведение журнала и оповещения по электронной почте), параллелизм и планирование. Помня об этих целях, я начал читать документацию Apache Airflow .

Все выглядит отлично, но я не знаю, как лучше подходить к параллелизму . Исходный скрипт начинается с загрузки списка идентификаторов объектов. Затем для каждого идентификатора он выполняет запрос к другой конечной точке, выполняет некоторые базовые c вычисления (генерирует новые поля) и сохраняет данные в CSV-файле.

Каков наилучший подход для этого? в параллели? Динамически запустить задачу для каждого объекта и присоединить данные позже? Является ли использование XCOM для передачи данных хорошей идеей? Что делать, если есть тысячи объектов? Другая вещь, которую было бы неплохо иметь, это повторять запрос в случае его сбоя.

Я знаю, что в этом случае я должен использовать исполнителя сельдерея и породить нескольких рабочих для выполнения всех задач.

Является ли Apache Airflow подходящим инструментом? Спасибо!

1 Ответ

2 голосов
/ 23 марта 2020

Вы определенно можете сделать это в Airflow. У меня похожая ситуация, и моя группа обеспечения доступности баз данных сначала проверяет количество объектов, а затем использует базис c для l oop, чтобы создать задачу (и) для каждого объекта. Операторы и задачи имеют уникальные имена и присваиваются каждому объекту. Тогда уровень параллелизма можно контролировать с помощью базовых опций конфигурации воздушного потока. Для соединения всего в конце я бы с осторожностью относился к xcoms, так как они могут занимать много места в БД. Вы можете временно сохранить плоские файлы, а затем объединить их для получения окончательного результата.

...