Utilize a tarefa values para passar informações entre tarefas.
As tarefas , values, e referem-se ao subutilitário Databricks Utilities taskValues
, que permite passar values arbitrárias entre tarefas num trabalho Databricks. Consulte o subutilitário taskValues (dbutils.jobs.taskValues).
Você especifica um par chave-valor usando dbutils.jobs.taskValues.set()
em uma tarefa e, em seguida, pode usar o nome da tarefa e a chave para fazer referência ao valor em tarefas subsequentes.
Nota
Os subutilitários dbutils.jobs.taskValues.set()
e dbutils.jobs.taskValues.get()
estão disponíveis apenas em notebooks Python. Você pode referenciar a tarefa values usando referências de valor dinâmico para todas as tarefas que oferecem suporte a parameters. Consulte tarefa de referência values.
Set tarefa values
Set tarefa values em blocos de anotações Python usando o subutilitário dbutils.jobs.taskValues.set()
.
As chaves de valor da tarefa devem ser cadeias de caracteres. Cada chave deve ser exclusiva se tiver várias tarefas values definidas num notebook.
Você pode atribuir manualmente ou programaticamente a tarefa values a chaves. Só são permitidos values que possam ser representados como JSON válidos. O tamanho da representação JSON do valor não pode exceder 48 KiB.
Por exemplo, o exemplo a seguir define uma cadeia de caracteres estática para a chave fave_food
:
dbutils.jobs.taskValues.set(key = "fave_food", value = "beans")
O exemplo a seguir usa um parâmetro de tarefa de bloco de anotações para consultar todos os registros para um número de ordem específico e retornar o status atual do pedido e a contagem total de registros:
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])
Você pode passar listas de values usando esse padrão e, em seguida, usá-las para coordenar a lógica downstream, como para cada tarefa. Consulte Executar uma tarefa de trabalho parametrizada do Azure Databricks em um loop.
O exemplo a seguir extrai o values distinto para ID do produto para um list Python e define isso como um valor de tarefa:
prod_list = list(spark.read.table("products").select("prod_id").distinct().toPandas()["prod_id"])
dbutils.jobs.taskValues.set(key = "prod_list", value = prod_list)
Tarefa de referência values
O Databricks recomenda referenciar a tarefa values como tarefa parameters configurada usando o padrão dinâmico de referência de valor {{tasks.<task_name>.values.<value_name>}}
.
Por exemplo, para fazer referência ao valor da tarefa com a chave prod_list
de uma tarefa chamada product_inventory
, use a sintaxe {{tasks.product_inventory.values.prod_list}}
.
Consulte Configurar tarefa parameters e O que é uma referência de valor dinâmico?
Utilizar o comando dbutils.jobs.taskValues.get
A sintaxe dbutils.jobs.taskValues.get()
requer a especificação do nome da tarefa upstream. Essa sintaxe não é recomendada, pois pode usar a tarefa values em várias tarefas a jusante, significando que são necessárias várias atualizações se o nome de uma tarefa for alterado.
Usando essa sintaxe, você pode, opcionalmente, especificar um default
valor e um debugValue
arquivo . O valor padrão é usado se a chave não puder ser encontrada. O debugValue
permite-lhe set um valor estático para usar durante o desenvolvimento manual de código e testes em cadernos antes de agendar o caderno como uma tarefa.
O exemplo a seguir obtém o valor para a chave order_status
set em um nome de tarefa order_lookup
. O valor Delivered
é retornado somente ao executar o bloco de anotações interativamente.
order_status = dbutils.jobs.taskValues.get(taskKey = "order_lookup", key = "order_status", debugValue = "Delivered")
Nota
O Databricks não recomenda estabelecer valuescomo padrão, pois podem ser difíceis de resolver e impedir mensagens de erro esperadas devido a chaves em falta ou tarefas com nomes incorretos.
Ver tarefa values
O valor retornado de um valor de tarefa para cada execução é exibido no painel Saída dos detalhes da execução da tarefa. Consulte Ver histórico de execução de tarefas.