Compartilhe informações entre a tarefa em um Databricks Job

O senhor pode usar valores de tarefa para passar parâmetros arbitrários entre tarefas em um trabalho Databricks. O senhor passa valores de tarefa usando a subutilidade taskValues em Databricks utilidades. O subutilitário taskValues fornece um API simples que permite que a tarefa produza valores que podem ser referenciados em tarefas subsequentes, facilitando a criação de fluxos de trabalho mais expressivos. Por exemplo, o senhor pode comunicar identificadores ou métricas, como informações sobre a avaliação de um modelo do machine learning, entre diferentes tarefas dentro da execução de um trabalho. Cada tarefa pode definir e obter vários valores de tarefa. Os valores de tarefa podem ser definidos e recuperados no site Python Notebook.

Observação

Agora o senhor pode usar referências de valores dinâmicos em seu Notebook para fazer referência aos valores de tarefa definidos na tarefa upstream. Por exemplo, para fazer referência ao valor com o key name definido pela tarefa Get_user_data, use {{tasks.Get_user_data.values.name}}. Como eles podem ser usados com vários tipos de tarefa, a Databricks recomenda o uso de referências de valor dinâmico em vez de dbutils.jobs.taskValues.get para recuperar o valor da tarefa programaticamente.

Usando valores de tarefa

A subutilidade taskValues fornece dois comandos: dbutils.jobs.taskValues.set() para definir uma variável e dbutils.jobs.taskValues.get() para recuperar um valor. Suponha que o senhor tenha duas tarefas de Notebook: Get_user_data e Analyze_user_data e queira passar o nome e a idade de um usuário da tarefa Get_user_data para a tarefa Analyze_user_data. O exemplo a seguir define o nome e a idade do usuário na tarefa Get_user_data:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key é o nome do valor da tarefa key. Esse nome deve ser exclusivo da tarefa.

  • value é o valor para a chave desse 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 tarefa Analyze_user_data:

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, será gerado um ValueError.

  • key é o nome do valor da tarefa key. Se o comando não conseguir encontrar esse valor de tarefa key, será gerado um ValueError (a menos que default seja especificado).

  • default é um valor opcional 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 notebook que está sendo executado fora de um job. Isso pode ser útil durante a depuração quando você quiser executar o notebook 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 contexto de compartilhamento entre tarefas, suponha que o senhor tenha um aplicativo que inclua vários modelos do machine learning para prever a renda de um indivíduo com base em vários atributos pessoais e uma tarefa que determine o melhor modelo a ser usado com base no resultado das três tarefas anteriores. Os modelos são executados por três tarefas denominadas Logistic_Regression, Decision_Tree e Random_Forest, e a tarefa Best_Model determina o melhor modelo a ser usado com base nos resultados das três tarefas anteriores.

gráfico de exemplo de aplicativo de classificação

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 Notebook de regressão logística associado à tarefa Logistic_Regression inclui o seguinte comando:

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

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

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

visualizar valores de tarefa

Para view o valor de um valor de tarefa após a execução de uma tarefa, acesse o histórico de execução da tarefa. Os resultados do valor da tarefa são exibidos no painel Output (Saída ).