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


Совместное использование сведений между задачами в задании Azure Databricks

Значения задач можно использовать для передачи произвольных параметров между задачами в задании Azure Databricks. Вы передаете значения задач с помощью подзадачи taskValues в служебных службах Databricks. Subutility taskValues предоставляет простой API, который позволяет задачам выводить значения, на которые можно ссылаться в последующих задачах, что упрощает создание более экспрессивных рабочих процессов. Например, вы можете передавать идентификаторы или метрики, включая сведения об оценке модели машинного обучения, между разными задачами в выполняемом задании. Каждая задача может задавать и получать несколько значений задач. Значения задач можно задать и извлечь в записных книжках Python.

Примечание.

Теперь можно использовать ссылки на динамические значения в записных книжках для ссылки на значения задач, заданные в вышестоящий задачах. Например, чтобы ссылаться на значение с ключом name , заданным задачей Get_user_data, используйте {{tasks.Get_user_data.values.name}}. Так как они могут использоваться с несколькими типами задач, Databricks рекомендует использовать динамические ссылки на значения вместо dbutils.jobs.taskValues.get того, чтобы получить значение задачи программным способом.

Использование значений задач

Subutility taskValues предоставляет две команды: dbutils.jobs.taskValues.set() задать переменную и dbutils.jobs.taskValues.get() получить значение. Предположим, у вас есть две задачи записной книжки: Get_user_data и Analyze_user_data хотите передать имя пользователя и возраст от Get_user_data задачи в Analyze_user_data задачу. В следующем примере задается имя и возраст пользователя в Get_user_data задаче:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key — имя ключа значения задачи. Это имя должно быть уникальным для задачи.
  • value — значение для этого ключа значения задачи. Эта команда должна иметь возможность представлять значение внутри в формате JSON. Размер представления JSON не может превышать 48 КиБ.

Следующий пример затем получает значения в Analyze_user_data задаче:

dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "age", default = 42, debugValue = 0)
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "name", default = "Jane Doe")
  • taskKey — имя задачи задания, задающее значение. Если команда не может найти эту задачу, возникает ошибка ValueError.
  • key — имя ключа значения задачи. Если команда не может найти этот ключ значения задачи, появляется ошибка ValueError (если не указано default).
  • default — необязательное значение, которое возвращается, если key не удается найти. default не может иметь значение None.
  • debugValue — необязательное значение, возвращаемое при попытке получить значение задачи из записной книжки, выполняемой за пределами задания. Это может быть полезно во время отладки, если нужно запустить записную книжку вручную и вернуть какое-либо значение вместо появления TypeError по умолчанию. debugValue не может иметь значение None.

В качестве более сложного примера обмена контекстом между задачами предположим, что у вас есть приложение, включающее несколько моделей машинного обучения для прогнозирования дохода отдельного человека с учетом различных личных атрибутов, и задача, которая определяет лучшую модель для использования на основе выходных данных из предыдущих трех задач. Модели выполняются тремя задачами с именем Logistic_Regression, Decision_Treeи Random_ForestBest_Model задача определяет лучшую модель для использования на основе выходных данных из предыдущих трех задач.

Graph of example classification application

Точность для каждой модели (насколько хорошо классификатор прогнозирует доход) передается в значение задачи, чтобы определить оптимальный алгоритм выполнения. Например, записная книжка логистической регрессии, связанная с задачей Logistic_Regression , включает следующую команду:

dbutils.jobs.taskValues.set(key = "model_performance", value = result)

Каждая задача модели задает значение ключа model_performance . Задача Best_Model считывает значение для каждой задачи и использует это значение для определения оптимальной модели. Следующий пример считывает значение, заданное задачей Logistic_Regression :

logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")

Просмотр значений задач

Чтобы просмотреть значение значения задачи после выполнения задачи, перейдите в журнал выполнения задачи. Результаты значения задачи отображаются на панели вывода .