Я пытаюсь понять модель воздушного потока для организации моих заданий зажигания ETL.
Я хотел бы декларативно построить график выполнения для своих заданий.
Итак, в основном у меня есть следующее:
- задание spark "ds1" создает раздел набора данных "ds1", для примера давайте представим, что это задание не зависит от других заданий.
- задание spark "ds2"создает раздел набора данных "ds2", это задание зависит от первого задания, он получает несколько разделов "ds1" в качестве основных аргументов.
Это задание объединяет разделы "ds1" и выводит из них некоторый бизнес-результат.
Таким образом, в основном у меня есть 1 раздел для зависимости от многих разделов.
Я не могу просто создать такой dag:
ds1 >> ds2
Мне нужно что-то вроде этого:
ds1(partition_1) >> ds2
ds1(partition_2) >> ds2
ds1(partition_3) >> ds2
, где ds1 параметризован с аргументом раздела
Это будет работать, ноЗадачи "ds1" для разных разделов всегда будут перезаписывать результаты самих себя, поскольку они вычисляют одно и то же.
Чтобы преодолеть такое поведение, я думаю, что я могу использовать такие датчики:
ds1 >> sensor(partition_1) >> all_success
ds1 >> sensor(partition_2) >> all_success
ds1 >> sensor(partition_3) >> all_success
all_success >> ds2
Isэто единственный способ сделать это в потоке воздуха?Является ли это идиоматическим в потоке воздуха?
У меня есть опыт работы с Луиджи, и такую зависимость в Луиджи можно сделать элегантно, вы можете сказать:
ds2 requires [ds1(partition_1), ds1(partition_2), ds1(partition_3)]
Эта задача Luigi DS2 будет запускать расчетDS1 пропущенные разделы, а затем DS2 раздел будет рассчитан.Выглядит просто и понятно.Можно ли такое поведение сделать в потоке воздуха?Или, может быть, есть другие способы работы с такой зависимостью в потоке воздуха?
Итак, вопрос в том, как идиоматически в потоке воздуха работать с графиком зависимости от 1 до многих разделов?
Надеюсь, вопрос ясен.
Спасибо за помощь!