Share via


Compartilhar informações entre tarefas em um trabalho do Azure Databricks

Você pode usar valores de tarefa para passar parâmetros arbitrários entre tarefas em um trabalho do Azure Databricks. Você passa valores de tarefa usando o subutilitário taskValues em Databricks Utilities. O subutilitário taskValues fornece uma API simples que permite que as tarefas produzam valores que podem ser referenciados em tarefas subsequentes, facilitando a criação de fluxos de trabalho mais expressivos. Por exemplo, você pode comunicar identificadores ou métricas, como informações sobre a avaliação de um modelo de aprendizado de máquina, entre diferentes tarefas dentro de uma execução de trabalho. Cada tarefa pode definir e obter vários valores de tarefa. Os valores das tarefas podem ser definidos e recuperados em blocos de anotações Python.

Nota

Agora você pode usar referências de valor dinâmico em seus blocos de anotações para fazer referência a valores de tarefas definidos em tarefas upstream. Por exemplo, para fazer referência ao valor com a chave name definida pela tarefa Get_user_data, use {{tasks.Get_user_data.values.name}}. Como eles podem ser usados com vários tipos de tarefas, o Databricks recomenda o uso de referências de valor dinâmico em vez de dbutils.jobs.taskValues.get recuperar o valor da tarefa programaticamente.

Usando valores de tarefa

O subutilitário taskValues fornece dois comandos: dbutils.jobs.taskValues.set() definir uma variável e dbutils.jobs.taskValues.get() recuperar um valor. Suponha que você tenha duas tarefas de bloco de anotações: Get_user_data e queira passar o nome e Analyze_user_data a idade de um usuário da Get_user_data tarefa para a Analyze_user_data tarefa. O exemplo a seguir define o nome e a idade do usuário na Get_user_data tarefa:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key é o nome da chave de valor da tarefa. Esse nome deve ser exclusivo para a tarefa.
  • value é o valor da chave deste valor de tarefa. Este comando deve ser capaz de representar o valor internamente no formato JSON. O tamanho da representação JSON do valor não pode exceder 48 KiB.

O exemplo a seguir obtém os valores na Analyze_user_data tarefa:

dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "age", default = 42, debugValue = 0)
dbutils.jobs.taskValues.get(taskKey = "Get_user_data", key = "name", default = "Jane Doe")
  • taskKey é o nome da tarefa de trabalho que define o valor. Se o comando não conseguir encontrar essa tarefa, um ValueError será gerado.
  • key é o nome da chave do valor da tarefa. Se o comando não conseguir encontrar a chave desse valor de tarefa, um será gerado (a ValueError menos que default seja especificado).
  • default é um valor opcional que é retornado se key não puder ser encontrado. default não pode ser None.
  • debugValue é um valor opcional que é retornado se você tentar obter o valor da tarefa de dentro de um bloco de anotações que está sendo executado fora de um trabalho. Isso pode ser útil durante a depuração quando você deseja executar seu bloco de anotações manualmente e retornar algum valor em vez de gerar um TypeError por padrão. debugValue não pode ser None.

Como um exemplo mais complexo de compartilhamento de contexto entre tarefas, suponha que você tenha um aplicativo que inclua vários modelos de aprendizado de máquina para prever a renda de um indivíduo dados vários atributos pessoais e uma tarefa que determine o melhor modelo a ser usado com base na saída das três tarefas anteriores. Os modelos são executados por três tarefas denominadas Logistic_Regression, e , Decision_Treee Random_Foresta tarefa determina o melhor modelo a Best_Model ser usado com base na saída das três tarefas anteriores.

Graph of example classification application

A precisão de cada modelo (quão bem o classificador prevê a renda) é passada em um valor de tarefa para determinar o algoritmo de melhor desempenho. Por exemplo, o bloco de anotações de regressão logística associado à Logistic_Regression tarefa inclui o seguinte comando:

dbutils.jobs.taskValues.set(key = "model_performance", value = result)

Cada tarefa de modelo define um valor para a model_performance chave. A Best_Model tarefa lê o valor de cada tarefa e usa esse valor para determinar o modelo ideal. O exemplo a seguir lê o valor definido pela Logistic_Regression tarefa:

logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")

Ver valores de tarefas

Para exibir o valor de uma tarefa depois que uma tarefa é executada, vá para o histórico de execução da tarefa. Os resultados do valor da tarefa são exibidos no painel Saída .