Планирование и оркестрация рабочих процессов
Рабочие процессы Databricks имеют средства, позволяющие планировать и оркестрировать задачи обработки данных в Azure Databricks. Рабочие процессы Databricks используются для настройки заданий Databricks.
В этой статье представлены основные понятия и варианты, связанные с управлением рабочими нагрузками с помощью заданий Databricks.
Что такое задания Databricks?
Задание — это основной модуль для планирования и оркестрации рабочих нагрузок в Azure Databricks. Задания состоят из одной или нескольких задач. Вместе задачи и задания позволяют настраивать и развертывать следующие задачи:
- Пользовательская логика, включая Spark, SQL, OSS Python, ML и произвольный код.
- Вычислительные ресурсы с пользовательскими средами и библиотеками.
- Расписания и триггеры для выполнения рабочих нагрузок.
- Условная логика для потока управления между задачами.
Задания предоставляют процедурный подход к определению связей между задачами. Конвейеры Delta Live Tables обеспечивают декларативный подход к определению связей между наборами данных и преобразованиями. Конвейеры Delta Live Tables можно включить в задание в качестве задачи. См . задачу конвейера delta Live Tables для заданий.
Задания могут отличаться от одной задачи, выполняемой записной книжкой Databricks, до тысяч задач, выполняемых с помощью условной логики и зависимостей.
Как настроить и запустить задания?
Вы можете создать и запустить задание с помощью пользовательского интерфейса заданий, интерфейса командной строки Databricks или вызова API заданий. С помощью пользовательского интерфейса или API можно восстановить и повторно запустить неудачное или отмененное задание. Результаты выполнения задания можно отслеживать с помощью пользовательского интерфейса, интерфейса командной строки, API и уведомлений (например, сообщений электронной почты, назначения веб-перехватчика или уведомлений Slack).
Если вы предпочитаете подход к настройке и оркестрации заданий с использованием инфраструктуры как кода (IaC), используйте пакеты ресурсов Databricks (DABS). Пакеты могут содержать определения заданий и задач YAML, управляются с помощью интерфейса командной строки Databricks и могут использоваться совместно и выполняться в разных целевых рабочих областях (таких как разработка, промежуточное создание и производство). Дополнительные сведения об использовании DAB для настройки и оркестрации заданий см. в статье Databricks Asset Bundles.
Дополнительные сведения об использовании интерфейса командной строки Databricks см. в статье "Что такое интерфейс командной строки Databricks?". Дополнительные сведения об использовании API заданий см. в API заданий.
Какая минимальная конфигурация необходима для задания?
Для всех заданий в Azure Databricks требуется следующее:
- Исходный код (например, записная книжка Databricks), содержащий логику для выполнения.
- Вычислительный ресурс для выполнения логики. Вычислительный ресурс может быть бессерверным, классическим вычислениям заданий или вычислениями всех целей. См. раздел "Настройка вычислений для заданий".
- Указанное расписание для выполнения задания. При необходимости можно опустить расписание и запустить задание вручную.
- Уникальное имя.
Примечание.
Если вы разрабатываете код в записных книжках Databricks, нажмите кнопку "Расписание", чтобы настроить эту записную книжку в качестве задания. См. статью "Создание запланированных заданий записной книжки и управление ими".
Что такое задача?
Задача представляет единицу логики, выполняемую как шаг в задании. Задачи могут варьироваться в сложности и могут включать следующие функции:
- Записная книжка.
- JAR-файл
- SQL-запросы
- Конвейер DLT
- Другое задание
- Задачи потока управления
Для управления порядком выполнения задач можно указывать зависимости между ними. В зависимости от настроек задачи могут выполняться последовательно или параллельно.
Задания взаимодействуют с сведениями о состоянии и метаданными задач, но область задач изолирована. Значения задач можно использовать для совместного использования контекста между запланированными задачами. См. раздел "Использование значений задач для передачи сведений между задачами".
Какие параметры потока управления доступны для заданий?
При настройке заданий и задач в заданиях можно настроить параметры, которые управляют выполнением всего задания и отдельных задач. Доступны следующие параметры:
- Триггеры
- Повторы
- Запуск, если условные задачи
- Если или другие условные задачи
- Для каждой задачи
- Пороговые значения длительности
- Параметры параллелизма
Типы триггеров
При настройке задания необходимо указать тип триггера. Вы можете выбрать один из следующих типов триггеров:
Вы также можете активировать задание вручную, но это в основном зарезервировано для конкретных вариантов использования, таких как:
- Для активации заданий с помощью вызовов REST API используется средство внешней оркестрации.
- У вас есть задание, которое выполняется редко и требует ручного вмешательства для проверки или устранения проблем с качеством данных.
- Вы выполняете рабочую нагрузку, которая должна выполняться только один раз или несколько раз, например миграция.
См . типы триггеров для заданий Databricks.
Повторы
Повторные попытки указывают, сколько раз следует повторно запустить определенную задачу, если задача завершается ошибкой. Ошибки часто временные и разрешаются с помощью перезапуска. Некоторые функции Azure Databricks, такие как эволюция схемы с структурированной потоковой передачей, предполагают, что вы выполняете задания с повторными попытками сброса среды и разрешаете рабочий процесс продолжить.
Если вы указываете повторные попытки для задачи, задача перезапускается до указанного количества раз, если она сталкивается с ошибкой. Не все конфигурации заданий поддерживают повторные попытки задачи. См. раздел "Настройка политики повторных попыток".
При выполнении в режиме непрерывного триггера Databricks автоматически повторяется с экспоненциальным обратным выходом. Узнайте, как обрабатываются сбои для непрерывных заданий?
Запуск, если условные задачи
Чтобы указать условные условия для последующих задач, можно использовать метод run , основанный на результатах других задач. Вы добавляете задачи в задание и задаете задачи, зависящие от вышестоящего потока. На основе состояния этих задач можно настроить одну или несколько подчиненных задач для выполнения. Задания поддерживают следующие зависимости:
- Все успешно выполнено
- По крайней мере один успешно выполнен
- Не удалось выполнить ошибку
- Все готово
- По крайней мере один сбой
- Все не удалось
См. статью "Настройка зависимостей задач"
Если или другие условные задачи
Тип задачи If/else можно использовать для указания условных условий на основе некоторого значения. См. раздел "Добавление логики ветвления в задание" с задачей If/else.
Поддержка taskValues
заданий, определяемых в логике, и позволяет возвращать результаты некоторых вычислений или состояний из задачи в среду заданий. Вы можете определить условия If/else для taskValues
, параметров задания или динамических значений.
Azure Databricks поддерживает следующие операнды для условных условий:
==
!=
>
>=
<
<=
См. также:
- Использование значений задач для передачи информации между задачами
- Что такое ссылка на динамическое значение?
- Параметризация заданий
Для каждой задачи
For each
Используйте задачу для выполнения другой задачи в цикле, передавая другой набор параметров каждой итерации задачи.
For each
Добавление задачи в задание требует определения двух задач: For each
задачи и вложенной задачи. Вложенная задача — это задача, выполняемая для каждой For each
итерации задачи и является одним из стандартных типов задач Databricks Jobs. Для передачи параметров в вложенную задачу поддерживаются несколько методов.
См . раздел "Запуск параметризованной задачи задания Azure Databricks" в цикле.
Пороговое значение длительности
Можно указать пороговое значение длительности для отправки предупреждения или остановки задачи или задания, если указанная длительность превышена. Примеры настройки этого параметра:
- У вас есть задачи, склонные к зависанию.
- Необходимо предупредить инженера, если соглашение об уровне обслуживания для рабочего процесса превышено.
- Чтобы избежать непредвиденных затрат, необходимо завершить задание, настроенное с большим кластером.
Сведения о настройке ожидаемого времени завершения или времени ожидания задания и настройке ожидаемого времени завершения или времени ожидания для задачи.
Параллелизм
Большинство заданий настраиваются с параллелизмом по умолчанию 1 параллельного задания. Это означает, что если предыдущее выполнение задания не завершено до момента запуска нового задания, следующее выполнение задания пропускается.
Некоторые варианты использования существуют для повышения параллелизма, но большинство рабочих нагрузок не требуют изменения этого параметра.
Дополнительные сведения о настройке параллелизма см. в статье Databricks Jobs queueing and concurrency settings.
Как отслеживать задания?
Пользовательский интерфейс заданий позволяет просматривать запуски заданий, включая выполняемые запуски. См. сведения о мониторинге и наблюдаемости заданий Databricks.
Вы можете получать уведомления при запуске задания или задачи, завершении или сбое. Вы можете отправлять уведомления на один или несколько адресов электронной почты или системных назначений. См. статью "Добавление уведомлений по электронной почте и системе" для событий задания.
Системные таблицы включают схему lakeflow
, в которой можно просматривать записи, связанные с действием задания в вашей учетной записи. См . справочник по системной таблице заданий.
Вы также можете присоединить системные таблицы заданий с таблицами выставления счетов, чтобы отслеживать затраты на задания в вашей учетной записи. См. статью "Мониторинг затрат на задание" с помощью системных таблиц.
Ограничения
Применяются следующие ограничения:
- Рабочая область ограничена 2000 одновременных запусков задач. Ответ
429 Too Many Requests
возвращается при запросе на выполнение, которое не может быть запущено немедленно. - Число заданий, создаваемых рабочей областью в течение часа, ограничено 10000 (включая "Отправка процессов выполнений"). Это ограничение также влияет на задания, создаваемые рабочими процессами записных книжек и REST API.
- Рабочая область может содержать до 12000 сохраненных заданий.
- Задание может содержать до 100 задач.
Можно ли программно управлять рабочими процессами?
Databricks имеет средства и API,которые позволяют планировать и оркестрировать рабочие процессы программным способом, включая следующие:
- CLI Databricks
- Пакеты активов Databricks
- Расширение Databricks для Visual Studio Code
- Пакеты SDK databricks
- REST API заданий
Дополнительные сведения о средствах разработчика см. в Средства разработчика.
Оркестрация рабочих процессов с помощью Apache AirFlow
Вы можете использовать Apache Airflow для управления и планирования рабочих процессов данных. При использовании Airflow вы определяете рабочий процесс в файле Python, а Airflow управляет планированием и выполнением рабочего процесса. См . сведения о заданиях Orchestrate Azure Databricks с помощью Apache Airflow.
Оркестрация рабочих процессов с помощью Фабрика данных Azure
Фабрика данных Azure (ADF) — это облачная служба интеграции данных, которая позволяет создавать хранилища данных, перемещения и обработки служб в автоматизированные конвейеры данных. С помощью ADF можно управлять заданием Azure Databricks в рамках конвейера ADF.
Сведения о запуске задания с помощью веб-действия ADF, включая проверку подлинности в Azure Databricks из ADF, см. в статье "Использование оркестрации заданий Azure Databricks из Фабрика данных Azure".
ADF также имеет встроенную поддержку для запуска записных книжек Databricks, скриптов Python или кода, упакованных в JARs в конвейере ADF.
Чтобы узнать, как запустить записную книжку Databricks в конвейере ADF, см. статью "Запуск записной книжки Databricks с действием записной книжки Databricks в Фабрика данных Azure", а затем преобразование данных путем запуска записной книжки Databricks.
Сведения о запуске скрипта Python в конвейере ADF см. в статье "Преобразование данных", выполнив действие Python в Azure Databricks.
Сведения о том, как выполнять код, упакованный в JAR-файл в конвейере ADF, см. в разделе "Преобразование данных", выполнив действие JAR в Azure Databricks.