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


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

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

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

Примечание.

Подзатраты dbutils.jobs.taskValues.set() и dbutils.jobs.taskValues.get() доступны только в записных книжках 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 не рекомендует задавать значения по умолчанию, так как они могут быть сложными для устранения неполадок и предотвращения ожидаемых сообщений об ошибках из-за отсутствия ключей или неправильно именованных задач.

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

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