Используйте задачу values для передачи информации между задачами
Задача values ссылается на подслужебную программу taskValues
в Utilities Databricks, которая позволяет передавать данные values между задачами в процессе Databricks. См. раздел Служебная подпрограмма taskValues (dbutils.jobs.taskValues).
Вы указываете пару "ключ-значение", используемую dbutils.jobs.taskValues.set()
в одной задаче, а затем может использовать имя задачи и ключ для ссылки на значение в последующих задачах.
Примечание.
Подзатраты dbutils.jobs.taskValues.set()
и dbutils.jobs.taskValues.get()
доступны только в записных книжках Python. Вы можете ссылаться на задачи values с помощью динамических ссылок на значения для всех задач, поддерживающих parameters. См. справочной задачи values.
Set задача values
Set задачи values в ноутбуках Python с использованием подутилиты dbutils.jobs.taskValues.set()
.
Ключи значений задачи должны быть строками. Каждый ключ должен быть уникальным, если в записной книжке определено несколько задач с номером values.
Вы можете вручную или программно назначить задачу values к клавишам. Разрешены только values, которые могут быть представлены в допустимом формате JSON. Размер представления JSON не может превышать 48 КиБ.
Например, следующий пример задает статическую строку для ключа fave_food
:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
В следующем примере используется параметр задачи записной книжки для запроса всех записей для определенного номера заказа и возврата текущего состояния заказа и общего количества записей:
from pyspark.sql.functions import col
order_num = dbutils.widgets.get("order_num")
query = (spark.read.table("orders")
.orderBy(col("updated"), ascending=False)
.select(col("order_status"))
.where(col("order_num") == order_num)
)
dbutils.jobs.taskValues.set(key = "record_count", value = query.count())
dbutils.jobs.taskValues.set(key = "order_status", value = query.take(1)[0][0])
Вы можете передать списки values с помощью этого шаблона, а затем использовать их для координации нижестоящей логики, например для каждой задачи. См . раздел "Запуск параметризованной задачи задания Azure Databricks" в цикле.
В следующем примере извлекается уникальный values для идентификатора продукта в переменную list на Python и устанавливается в качестве значения для задачи:
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
опорное задание values
Databricks рекомендует ссылаться на задачу values как на задачу parameters, настроенную с помощью шаблона динамической ссылки {{tasks.<task_name>.values.<value_name>}}
.
Например, чтобы ссылаться на значение задачи с ключом prod_list
из задачи с именем product_inventory
, используйте синтаксис {{tasks.product_inventory.values.prod_list}}
.
См. раздел Настройка задач parameters и Что такое ссылка на динамическое значение?
Использование dbutils.jobs.taskValues.get
Для синтаксиса dbutils.jobs.taskValues.get()
требуется указать имя вышестоящей задачи. Этот синтаксис не рекомендуется, так как можно использовать values задачи в нескольких подчиненных задачах, то есть при изменении имени задачи требуется множество обновлений.
С помощью этого синтаксиса можно при необходимости указать default
значение и значение debugValue
. Значение по умолчанию используется, если ключ не найден.
debugValue
позволяет set статическое значение во время разработки и тестирования кода вручную, в записных книжках, прежде чем запланировать записную книжку как задачу.
В следующем примере возвращается значение ключа order_status
set в имени задачи order_lookup
.
Delivered
Значение возвращается только при интерактивном запуске записной книжки.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Примечание.
Databricks не рекомендует задавать valuesпо умолчанию, так как они могут быть сложными для устранения неполадок и предотвращения ожидаемых сообщений об ошибках из-за отсутствия ключей или неправильно именованных задач.
Просмотр задачи values
Возвращаемое значение значения задачи для каждого запуска отображается на панели вывода сведений о выполнении задачи. См. Просмотр журнала выполнения задач.