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 Utilitários do Databricks. O subutilitário taskValues fornece uma API simples que permite que as tarefas gerem 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 machine learning, entre tarefas diferentes em uma execução de trabalho. Cada tarefa pode definir e obter vários valores de tarefa. Os valores da tarefa podem ser definidos e recuperados em notebooks Python.
Observação
Agora você pode utilizar referências de valores dinâmicos em seus notebooks para referenciar valores de tarefas definidos em tarefas upstream. Por exemplo, para referenciar o valor com a chave name
definida pela tarefa Get_user_data
, utilize {{tasks.Get_user_data.values.name}}
. Como eles podem ser utilizados com vários tipos de tarefa, o 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
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 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 seguinte exemplo 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 chave de valor da tarefa. Esse nome deve ser exclusivo para o trabalho.value
é o valor dessa chave de valor de tarefa. Esse comando deve poder representar o valor internamente no formato JSON. O tamanho da representação JSON do valor não pode exceder 48 KiB.
O seguinte exemplo 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 localizar essa tarefa, umValueError
será gerado.key
é o nome da chave de valor da tarefa. Se o comando não puder localizar essa chave de valor de tarefa,ValueError
será gerado (a menos quedefault
seja especificado).default
é um valor opcional que será retornado sekey
não puder ser encontrado.default
não pode serNone
.debugValue
é um valor opcional que será retornado se você tentar obter o valor de tarefa de dentro de um notebook que está em execução fora de um trabalho. Isso pode ser útil durante a depuração quando você deseja executar seu notebook manualmente e retornar algum valor em vez de gerar umTypeError
por padrão.debugValue
não pode serNone
.
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, considerando vários atributos pessoais, e uma tarefa que determina 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 chamadas 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.
A precisão de cada modelo (quão bem o classificador prevê a renda) é passada em um valor de tarefa para determinar o algoritmo com 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 de modelo define um valor para a chave model_performance
. A tarefa Best_Model
lê o valor de cada tarefa e usa esse valor para determinar o modelo ideal. O seguinte exemplo lê o valor definido pela tarefa Logistic_Regression
:
logistic_regression = dbutils.jobs.taskValues.get(taskKey = "Logistic_Regression", key = "model_performance")
Exibir valores de tarefa
Para exibir o valor de uma tarefa após a execução de uma tarefa, acesse o histórico de execuções de tarefas da tarefa. Os resultados do valor da tarefa são exibidos no painel Saída.