Uso compartido de información entre tareas en un trabajo de Azure Databricks

Puede usar valores de tarea para pasar parámetros arbitrarios entre tareas en un trabajo de Azure Databricks. Los valores de tarea se pasan mediante la subutilidad taskValues en las utilidades de Databricks. La subutilidad taskValues proporciona una API sencilla que permite a las tareas generar valores a los que se puede hacer referencia en tareas posteriores, lo que facilita la creación de flujos de trabajo más expresivos. Por ejemplo, puede comunicar identificadores o métricas, como la información sobre la evaluación de un modelo de Machine Learning, entre diferentes tareas dentro de una ejecución de trabajo. Cada tarea puede establecer y obtener varios valores de tarea. Los valores de tarea se pueden establecer y recuperar en cuadernos de Python.

Nota:

Ahora puede usar referencias de valor dinámico en los cuadernos para hacer referencia a los valores de tarea establecidos en tareas ascendentes. Por ejemplo, para hacer referencia al valor con la clave name establecida por la tarea Get_user_data, use {{tasks.Get_user_data.values.name}}. Como se pueden usar con varios tipos de tareas, Databricks recomienda usar referencias de valor dinámico en lugar de dbutils.jobs.taskValues.get para recuperar el valor de tarea mediante programación.

Uso de valores de tarea

La subutilidad taskValues proporciona dos comandos: dbutils.jobs.taskValues.set() para establecer una variable y dbutils.jobs.taskValues.get() para recuperar un valor. Supongamos que tiene dos tareas de cuaderno: Get_user_data y Analyze_user_data, y que quiere pasar el nombre y la edad de un usuario de la tarea Get_user_data a la tarea Analyze_user_data. En el ejemplo siguiente se establece el nombre y la edad del usuario en la tarea Get_user_data:

dbutils.jobs.taskValues.set(key = 'name', value = 'Some User')
dbutils.jobs.taskValues.set(key = "age", value = 30)
  • key es el nombre de la clave del valor de tarea. Este nombre debe ser único en la tarea.
  • value es el valor de la clave de este valor de tarea. Este comando debe ser capaz de representar el valor internamente en formato JSON. El tamaño de la representación JSON del valor no puede superar los 48 KiB.

A continuación, en el ejemplo siguiente se obtienen los valores de la tarea 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 es el nombre de la tarea de trabajo que establece el valor. Si el comando no encuentra esta tarea, se genera una excepción ValueError.
  • key es el nombre de la clave del valor de tarea. Si el comando no encuentra la clave de este valor de tarea, se genera una excepción ValueError (a menos que se especifique default).
  • default es un valor opcional que se devuelve si no se encuentra key. default no puede ser None.
  • debugValue es un valor opcional que se devuelve si intenta obtener el valor de tarea desde un cuaderno que se ejecuta fuera de un trabajo. Esto puede ser útil durante la depuración cuando quiera ejecutar el cuaderno manualmente y devolver algún valor en lugar de generar una excepción TypeError de manera predeterminada. debugValue no puede ser None.

Como ejemplo más complejo de uso compartido de contexto entre tareas, supongamos que tiene una aplicación que incluye varios modelos de aprendizaje automático para predecir los ingresos de un individuo dados varios atributos personales, y una tarea que determina el mejor modelo que se usará en función de la salida de las tres tareas anteriores. Los modelos se ejecutan mediante tres tareas denominadas Logistic_Regression, Decision_Tree y Random_Forest, y la tarea Best_Model determina el mejor modelo que se va a usar en función de la salida de las tres tareas anteriores.

Graph of example classification application

La precisión de cada modelo (con qué exactitud predice el clasificador los ingresos) se pasa en un valor de tarea para determinar el algoritmo de mejor rendimiento. Por ejemplo, el cuaderno de regresión logística asociado a la tarea Logistic_Regression incluye el siguiente comando:

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

Cada tarea de modelo establece un valor para la clave model_performance. La tarea Best_Model lee el valor de cada tarea y usa ese valor para determinar el modelo óptimo. En el ejemplo siguiente se lee el valor establecido por la tarea Logistic_Regression:

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

Visualización de los valores de tarea

Para ver el valor de un valor de tarea después de que se ejecute una tarea, vaya al historial de ejecución de esa tarea. Los resultados del valor de tarea se muestran en el panel Salida.