Поделиться через


Выполнение задач условно в задании Azure Databricks

По умолчанию задача задания выполняется при выполнении зависимостей и успешном выполнении всех задач, но вы также можете настроить задачи в задании Azure Databricks, чтобы выполняться только в случае выполнения определенных условий. Задания Azure Databricks поддерживают следующие методы выполнения задач условно:

  • Можно указать запуск, если зависимости для выполнения задачи зависят от состояния выполнения зависимостей задачи. Например, можно использовать Run if для запуска задачи даже при сбое некоторых или всех зависимостей, что позволяет заданию восстановиться после сбоев и продолжить выполнение.
  • Задача условия If/else используется для выполнения части задания DAG на основе результатов логического выражения. Задача If/else condition позволяет добавить логику ветвления в задание. Например, выполнение задач преобразования выполняется только в том случае, если задача приема вышестоящий добавляет новые данные. В противном случае выполните задачи обработки данных.

Run if Добавление условия задачи

Условие можно настроить Run if при изменении задачи с одним или несколькими зависимостями. Чтобы добавить условие в задачу, выберите условие в раскрывающемся меню "Запуск" в раскрывающемся меню зависимостей в конфигурации задачи. Условие Run if вычисляется после завершения всех зависимостей задач. Можно также добавить условие при добавлении Run if новой задачи с одной или несколькими зависимостями.

Run if Параметры условия

В задачу можно добавить следующие Run if условия:

  • Все успешно: все зависимости выполняются и успешно выполнены. Это условие по умолчанию для выполнения задачи. Задача помечена как Upstream failed если условие не удается выполнить.
  • По крайней мере один успешно выполнен: по крайней мере одна зависимость успешно выполнена. Задача помечена как Upstream failed если условие не удается выполнить.
  • Не удалось выполнить ни одну из зависимостей: не удалось выполнить по крайней мере одну зависимость. Задача помечена как Upstream failed если условие не удается выполнить.
  • Все готово: задача выполняется после выполнения всех зависимостей независимо от состояния зависимых запусков. Это условие позволяет определить задачу, которая выполняется без зависимости от результата зависимых задач.
  • По крайней мере один сбой: по крайней мере одна зависимость завершилась ошибкой. Задача помечена как Excluded если условие не удается выполнить.
  • Все сбои: все зависимости завершились сбоем. Задача помечена как Excluded если условие не удается выполнить.

Примечание.

  • Задачи, настроенные для обработки сбоев, помечаются так, как Excluded если их Run if условие не соответствует. Исключенные задачи пропускаются и рассматриваются как успешные.
  • Если все зависимости задач исключены, задача также исключается независимо от его Run if условия.
  • При отмене выполнения задачи отмена распространяется через подчиненные задачи и задачи с Run if условием, которое обрабатывает сбой, например, чтобы проверить выполнение задачи очистки при отмене выполнения задачи.

Как задания Azure Databricks определяют состояние выполнения задания?

Задания Azure Databricks определяют успешность выполнения задания на основе результатов конечных задач задания. Конечная задача — это задача, которая не имеет подчиненных зависимостей. Выполнение задания может иметь один из трех результатов:

  • Выполнено: все задачи были успешными.
  • Успешно выполнено сбоями: некоторые задачи завершились сбоем, но все конечные задачи были успешными.
  • Сбой: сбой одной или нескольких конечных задач.

Добавление логики ветвления в задание с задачей If/else condition

If/else condition Используйте задачу для запуска части daG задания на основе логического выражения. Выражение состоит из логического оператора и пары операндов, где операнды могут ссылаться на задание или состояние задачи с помощью переменных задания и параметра задачи или использовать значения задач.

Примечание.

  • Числовые и нечисловые значения обрабатываются по-разному в зависимости от логического оператора:
    • != Операторы == выполняют сравнение строк операндов. Например, 12.0 == 12 значение false.
    • >=Операторы >и <= операторы выполняют числовые сравнения операндов. Например, 12.0 >= 12 вычисляется значение true и 10.0 >= 12 вычисляется значение false.
    • Допустимы только числовые, строковые и логические значения при ссылке на значения задач в операнде. Любые другие типы могут привести к сбою выражения условия. Нечисловые типы значений сериализуются в строки и обрабатываются как строки в If/else condition выражениях. Например, если для значения задачи задано логическое значение, сериализуется в "true" или "false".

Вы можете добавить If/else condition задачу при создании задания или изменении задачи в существующем задании. Чтобы настроить задачу, выполните приведенные If/else condition действия.

  1. В раскрывающемся меню "Тип" выберите If/else condition.
  2. В первом текстовом поле условия введите операнду для оценки. Операнды могут ссылаться на переменную задания или параметра задачи или значение задачи.
  3. Выберите логический оператор в раскрывающемся меню.
  4. Во втором текстовом поле Условия введите значение для оценки условия.

Чтобы настроить зависимости для If/else condition задачи, выполните следующие действия.

  1. Выберите задачу в представлении If/else condition DAG и нажмите кнопку +Добавить задачу.
  2. После ввода сведений о задаче нажмите кнопку "Зависит" и выберите <task-name> (true) , где <task-name> находится имя If/else condition задачи.
  3. Повторите для условия, в который оценивается falseзначение .

Например, предположим, что у вас есть задача с именем process_records , которая поддерживает количество записей, недопустимых в именованном bad_recordsзначении, и вы хотите ветвить обработку на основе того, найдены ли недопустимые записи. Чтобы добавить эту логику в рабочий If/else condition процесс, можно создать задачу с таким выражением, как {{tasks.process_records.values.bad_records}} > 0. Затем можно добавить зависимые задачи на основе результатов условия.

После выполнения задания, содержащего If/else condition задачу, можно просмотреть результат выражения и подробные сведения об оценке выражений при просмотре сведений о выполнении задания в пользовательском интерфейсе.