Ejecución de una tarea parametrizada de trabajo de Azure Databricks en bucle

En este artículo se describe el uso de la tarea For each con los trabajos de Azure Databricks, incluidos detalles sobre cómo agregar y configurar la tarea en la interfaz de usuario de trabajos. Use la tarea For each para ejecutar una tarea en bucle, pasando un conjunto diferente de parámetros a cada iteración de la tarea.

Agregar la tarea For each a un trabajo requiere definir dos tareas: la tarea For each y una tarea anidada. La tarea anidada es la tarea que se va a ejecutar para cada iteración de la tarea For each y es uno de los tipos de tareas de trabajos de Azure Databricks estándar. No puede agregar otra tarea For each como tarea anidada.

Por ejemplo, podría usar la tarea For each para realizar un conjunto común de transformaciones en varias tablas, pasando un nombre de tabla de una lista de nombres de tabla a cada iteración de la tarea.

¿Qué tipos de parámetros puedo usar con la tarea For each?

Para pasar parámetros desde una tarea For each, puede hacer lo siguiente:

  • Defina una colección en formato JSON al crear o editar una tarea.
  • Use valores de tarea pasados desde una tarea anterior. Para obtener más información sobre los valores de tarea, consulte Use task values to pass information between tasks (Uso de valores de tarea para pasar información entre tareas).
  • Uso de parámetros de trabajo. Para obtener más información sobre los parámetros de trabajo, consulte Configure job parameters (Configuración de parámetros del trabajo).

Para obtener información sobre cómo usar estos tipos de parámetros diferentes al agregar o editar una tarea For each, consulte la siguiente sección, Add the For each task to a job (Agregar area Para cada uno a un trabajo).

Agregar la tarea For each a un trabajo

Agregue una tarea For each al crear un trabajo o editar una tarea de un trabajo existente. Para configurar una tarea For each:

  1. En el menú desplegable Tipo, seleccione Para cada uno.

  2. Escriba un nombre para la tarea en el campo Nombre de la tarea.

  3. En el cuadro de texto Entradas, defina los valores de la tarea For each sobre los que se va a iterar. Este puede ser uno de los siguientes:

    • Matriz con formato JSON de valores. Puede ser una matriz de los siguientes tipos de datos:

      • pares clave-valor
      • Cadenas, números o tipos booleanos
      • Objetos JSON arbitrariamente complejos
    • Referencias de valor de tarea. Para hacer referencia a los valores de tarea pasados desde una tarea anterior, use la sintaxis {{tasks.<task_name>.values.<task_value_name>}} para establecer el valor en el cuadro de texto Entradas. Por ejemplo, si una tarea denominada generate_countries_list que precede a la tarea For each establece el siguiente valor de tarea:

      dbutils.jobs.taskValues.set(key = "countries", value = countries_array)

      Entonces, la tarea For each hace referencia al valor de la tarea en el cuadro de texto Entradas mediante la siguiente sintaxis:

      {{tasks.generate_countries_list.values.countries}}.

    • Parámetros del trabajo. Para hacer referencia a un parámetro de trabajo, use la siguiente sintaxis en el cuadro de texto Entradas: {{job.parameters.<name>}}. Por ejemplo, {{job.parameters.countries}}.

  4. Para establecer opcionalmente el número de iteraciones que se pueden ejecutar en paralelo, escriba un valor de simultaneidad para la tarea. El valor predeterminado es 1.

  5. Si desea recibir notificaciones del inicio, el éxito o el error de la tarea, haga clic en + Agregar. Consulte Adición de notificaciones por correo electrónico y sistema para eventos de trabajo.

  6. Para completar la configuración de la tarea For each y agregar una tarea anidada para que se ejecute con cada iteración, haga clic en Agregar una tarea para ejecutarla en bucle.

  7. Seleccione un tipo de tarea y opciones de configuración para la tarea anidada. Las tareas anidadas son tipos de tareas estándar y tienen las mismas opciones de configuración. Consulte Configuración y edición de tareas de Databricks.

  8. Para hacer referencia a los parámetros pasados desde la tarea For each, haga clic en Parámetros. Utilice la referencia {{input}} para establecer el valor en el valor de la matriz de cada iteración o {{input.<key>}} para hacer referencia a campos de objeto individuales al iterar sobre una lista de objetos.

    Agregar una tarea anidada a una tarea “Para cada uno”

  9. Haga clic en Create task (Crear tarea).

Cambiar entre la tarea For each y la tarea anidada

La tarea For each aparece en la interfaz de usuario de trabajos como un nodo con el nodo de tarea anidada dentro del nodo For each. Para cambiar entre la tarea For each y la tarea anidada, haga clic en los nodos respectivos.

Cambio de vista DAG de la interfaz de usuario de trabajos a Para cada tarea

Cambio de vista DAG de la interfaz de usuario de trabajos a tarea anidada

Hacer referencia a una tarea For each en tareas de bajada

La tarea For each es la tarea de nivel superior y las tareas de nivel inferior pueden especificarla como una dependencia. Las tareas de bajada no pueden depender de la tarea anidada ni hacer referencia a ella.

Ejecución y supervisión de un trabajo con una tarea For each

Ejecutar un trabajo con una tarea For each es idéntico a ejecutar cualquier otro trabajo.

La visualización y administración de ejecuciones de trabajos también es idéntica a cualquier otro trabajo, excepto el historial de ejecución de tareas de una tarea For each, que se presenta como una tabla de iteraciones de tareas. Consulte Visualización del historial de ejecución de tareas para una tarea “Para cada uno”.