Compartilhar informações entre tarefas em um Jobdo Databricks

Você pode usar valores de tarefa para passar parâmetros arbitrários entre tarefas em um Job do Databricks. Você passa valores de tarefa usando o subutilitário taskValues nas utilidades do Databricks. 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 do machine learning, entre diferentes tarefas em uma execução Job . Cada tarefa pode definir e obter vários valores de tarefa. Os valores da tarefa podem ser definidos e recuperados no Python Notebook.

Observação

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

Usando valores de tarefas

O subutilitário taskValues fornece dois comandos: dbutils.jobs.taskValues.set() para definir uma variável e dbutils.jobs.taskValues.get() para recuperar um valor. Suponha que você tenha duas tarefas Notebook : Get_user_data e Analyze_user_data e deseja 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 da key de valor da tarefa. Esse nome deve ser exclusivo para a tarefa.

  • value é o valor para key 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 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 Job que define o valor. Se o comando não puder localizar esta tarefa, um ValueError será gerado.

  • key é o nome da key do valor da tarefa. Se o comando não puder localizar key desse valor de tarefa, um ValueError será levantado (a menos que default seja especificado).

  • default é um valor opcional que é retornado se key não pode ser encontrado. default não pode ser None.

  • debugValue é um valor opcional que é retornado se você tentar obter o valor da tarefa de um Notebook que está sendo executado fora de um Job. Isso pode ser útil durante a depuração quando você deseja executar seu Notebook manualmente e retornar algum valor em vez de aumentar um TypeError por default. debugValue não pode ser None.

Como um exemplo mais complexo de compartilhamento de contexto entre tarefas, suponha que você tenha um aplicativo que inclui vários modelos de machine learning para prever a renda de um indivíduo com base em vários atributos pessoais e uma tarefa que determina o melhor modelo a ser usado com base na saída do anterior três tarefas. 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 na saída das três tarefas anteriores.

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

A precisão de cada modelo (quão bem o classificador prevê a receita) é 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 modelo define um valor para a key model_performance . 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")

Ver valores da tarefa

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