Создание динамического потока воздуха - PullRequest
0 голосов
/ 08 октября 2019

Кто-нибудь, скажите, пожалуйста, является ли DAG в потоке воздуха просто графиком (например, заполнителем) без каких-либо фактических данных (например, аргументов), связанных с ним, ИЛИ DAG похож на экземпляр (для фиксированного аргумента)?

Мне нужна система, в которой набор выполняемых операций (заданный набор аргументов) является фиксированным. Но этот ввод будет отличаться при каждом запуске набора операций. Проще говоря, конвейер одинаков, но аргументы конвейера будут отличаться при каждом запуске.

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

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

Ответы [ 3 ]

0 голосов
/ 08 октября 2019

Вы можете думать о Airflow DAG как о программе, составленной из других программ, за исключением того, что она не может содержать циклы (ациклические). Будете ли вы менять свою программу каждый раз при изменении входных данных? Конечно, все зависит от того, как вы пишете свою программу, но обычно вы хотите, чтобы ваша программа была обобщена, верно? Вы не хотите, чтобы две разные программы делали 2 + 2 и 3 + 3. Но у вас будут разные программы для показа страниц Facebook и игры в Pokemon Go. Если вы хотите сделать то же самое с аналогичными данными, то вы хотите написать свою группу доступности базы данных один раз и, возможно, изменить только аргументы среды (соединение с БД, дату и т. Д.) - для этого идеально подходит Airflow.

0 голосов
/ 09 октября 2019

Вам не нужно каждый раз создавать новую группу доступности баз данных, если структура графика одинакова.

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

Можно, например, создать веб-форму, которая принимает аргументы, сохраняет их в БД и затем планирует DAG с помощью restAPI Airflow. Затем необходимо написать код DAG для получения параметров из базы данных.

Есть несколько других способов выполнить то, что вы просите, все они зависят только от вашего варианта использования. Одно предостережение, планировщик воздушного потока не будет работать хорошо, если вы измените дату начала DAG. Для вашей идеи выше, вам нужно будет установить дату начала раньше, чем ваш первый прогон DAG, а затем отключить интервал расписания. Таким образом, у вас есть начальная дата, которая не меняется, и динамически запускаемые прогоны DAG.

0 голосов
/ 08 октября 2019

Да, вы правы;DAG в основном похож на односторонний граф. Вы можете создать группу обеспечения доступности баз данных один раз, связав вместе несколько operators, чтобы сформировать свою "структуру".

Каждый оператор может затем принять несколько аргументов, которые можно передать из самого файла определения группы DAG (при необходимости). .

Или вы можете передать объект конфигурации в группу обеспечения доступности баз данных и получить оттуда пользовательские данные, используя context.

. Я бы порекомендовал прочитать документы Airflow Docs для получения дополнительных примеров: https://airflow.apache.org/concepts.html#tasks

...