Совместное использование сведений между задачами в задании 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_Forest
Best_Model
задача определяет лучшую модель для использования на основе выходных данных из предыдущих трех задач.
Точность для каждой модели (насколько хорошо классификатор прогнозирует доход) передается в значение задачи, чтобы определить оптимальный алгоритм выполнения. Например, записная книжка логистической регрессии, связанная с задачей 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")
Просмотр значений задач
Чтобы просмотреть значение значения задачи после выполнения задачи, перейдите в журнал выполнения задачи. Результаты значения задачи отображаются на панели вывода .