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


Использование значений задач для передачи информации между задачами

Значения задачи относятся к утилитам Databricks, taskValues вспомогательный компонент которых позволяет передавать произвольные значения между задачами в задании Databricks. См. раздел Служебная подпрограмма taskValues (dbutils.jobs.taskValues).

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

Примечание.

Поскольку dbutils.jobs.taskValues.set() и dbutils.jobs.taskValues.get() в dbutils.jobs.taskValues являются функциями Python, они могут использоваться только в ноутбуках с Python, выбранным в качестве языка. Однако можно ссылаться на значения задач с помощью динамических ссылок на значения для всех задач, поддерживающих параметры. См. справочные значения задач.

Установить значения задачи

Установите значения задач в записных книжках Python с помощью подутилиты dbutils.jobs.taskValues.set().

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

Можно вручную или программно назначать значения задач ключам. Разрешены только значения, которые могут быть выражены как допустимые 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])

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

В следующем примере уникальные значения идентификатора продукта извлекаются в список 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)

Эталонные значения задачи

Databricks рекомендует ссылаться на значения задач как на параметры задачи, настроенные с использованием шаблона динамической ссылки на значение {{tasks.<task_name>.values.<value_name>}}.

Например, чтобы ссылаться на значение задачи с ключом prod_list из задачи с именем product_inventory, используйте синтаксис {{tasks.product_inventory.values.prod_list}}.

См. статью Настройка параметров задачи и Что такое ссылка на динамическое значение?

Использование dbutils.jobs.taskValues.get

Для синтаксиса dbutils.jobs.taskValues.get() требуется указать имя вышестоящей задачи. Этот синтаксис не рекомендуется, так как можно использовать значения задач в нескольких подчиненных задачах, то есть при изменении имени задачи требуется множество обновлений.

С помощью этого синтаксиса можно при необходимости указать default значение и значение debugValue. Значение по умолчанию используется, если ключ не найден. debugValue позволяет задать статическое значение для использования во время разработки и тестирования кода вручную в записных книжках перед планированием записной книжки в качестве задачи.

В следующем примере возвращается значение для ключа order_status, заданного в имени задачи order_lookup. Delivered Значение возвращается только при интерактивном запуске записной книжки.

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

Примечание.

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

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

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