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


Используйте задачу 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_statusset в имени задачи order_lookup. Delivered Значение возвращается только при интерактивном запуске записной книжки.

order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")

Примечание.

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

Просмотр задачи values

Возвращаемое значение значения задачи для каждого запуска отображается на панели вывода сведений о выполнении задачи. См. Просмотр журнала выполнения задач.