Creación, ejecución y administración de trabajos de Azure Databricks

Un trabajo es una forma de ejecutar código no interactivo en un clúster de Azure Databricks. Por ejemplo, puede ejecutar una carga de trabajo de extracción, transformación y carga (ETL) de forma interactiva o programada. También puede ejecutar trabajos de forma interactiva en la interfaz de usuario del cuaderno.

Puede crear y ejecutar un trabajo mediante la interfaz de usuario, la CLI o invocando la API de trabajos. Puede reparar y volver a ejecutar un trabajo con errores o cancelados mediante la interfaz de usuario o la API. Puede supervisar los resultados de la ejecución de un trabajo mediante el uso de la UI, la CLI, la API y las notificaciones de correo electrónico. Este artículo se centra en la realización de tareas de trabajos mediante la interfaz de usuario. Para ver los demás métodos, consulte CLI de trabajos y API de trabajos 2.1.

El trabajo puede consistir en una sola tarea o puede ser un gran flujo de trabajo de varias tareas con dependencias complejas. Azure Databricks administra la orquestación de tareas, la administración de clústeres, la supervisión y la generación de informes de errores en todos los trabajos. Puede ejecutar los trabajos de forma inmediata o periódica a través de un sistema de programación fácil de usar.

Puede implementar una tarea en un JAR, un cuaderno de Azure Databricks, una canalización de Delta Live Tables o una aplicación escrita en Scala, Java o Python. También se admiten las aplicaciones de Spark Submit heredadas. Usted controla el orden de ejecución de las tareas al especificar las dependencias entre las tareas. Puede configurar tareas para que se ejecuten en secuencia o en paralelo. En el siguiente diagrama se muestra un flujo de trabajo que realiza lo siguiente:

  1. Ingiere datos sin procesar de secuencias de clics y lleva a cabo el procesamiento para realizar sesiones de los registros.

  2. Ingiere los datos de pedido y los une con los datos de secuencias de clics en sesiones para crear un conjunto de datos preparado para su análisis.

  3. Extrae características de los datos preparados.

  4. Realiza tareas en paralelo para conservar las características y entrenar un modelo de Machine Learning.

    Ejemplo de flujo de trabajo de varias tareas

Para crear el primer flujo de trabajo con un trabajo de Azure Databricks, consulte el inicio rápido.

Importante

  • Solo puede crear trabajos en áreas de trabajo de Data Science & Engineering o de Machine Learning.
  • Un área de trabajo está limitada a 1000 ejecuciones de trabajo simultáneas. Se devuelve una respuesta 429 Too Many Requests cuando se solicita una ejecución que no se puede iniciar inmediatamente.
  • El número de trabajos que puede crear un área de trabajo en una hora está limitado a 10000 (incluye "envío de ejecuciones"). Este límite también afecta a los trabajos creados por los flujos de trabajo de la API REST y del cuaderno.

Creación de un trabajo

  1. Realice una de las siguientes acciones:

    • Haga clic en WorkflowsJobs en la barra lateral y haga clic en Create Job Button.
    • En la barra lateral, haga clic en Icono NuevoNuevo y seleccione Trabajo.

    Aparece la pestaña Tareas con el cuadro de diálogo Crear tarea.

    Pantalla Crear tarea

  2. Reemplace Add a name for your job… (Agregar un nombre para el trabajo…) por el nombre del trabajo.

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

  4. En el menú desplegable Type, seleccione el tipo de tarea que se va a ejecutar.

    • Notebook: en el menú desplegable Source, seleccione una ubicación para el cuaderno; puede ser Workspace en el caso de un cuaderno ubicado en una carpeta de área de trabajo de Azure Databricks o Git provider si el cuaderno está ubicado en un repositorio de Git remoto.

      Área de trabajo: use el explorador de archivos para buscar el cuaderno, haga clic en el nombre y luego en Confirmar.

      Proveedor de Git: haga clic en Editar y escriba la información del repositorio de Git. Consulte Ejecución de trabajos mediante cuadernos en un repositorio de Git remoto.

    • JAR: especifique la clase Main. Use el nombre completo de la clase que contiene el método Main, por ejemplo, org.apache.spark.examples.SparkPi. Después, haga clic en Add (Agregar) en Dependent Libraries (Bibliotecas dependientes) para agregar las bibliotecas necesarias para ejecutar la tarea. Una de estas bibliotecas debe contener la clase Main.

      Para más información sobre las tareas JAR, consulte Trabajos JAR.

    • Spark Submit: en el cuadro de texto Parameters (Parámetros), especifique la clase Main, la ruta de acceso al archivo JAR de la biblioteca y todos los argumentos, con el formato de una matriz de cadenas JSON. En el ejemplo siguiente se configura una tarea spark-submit para ejecutar DFSReadWriteTest desde los ejemplos de Apache Spark:

      ["--class","org.apache.spark.examples.DFSReadWriteTest","dbfs:/FileStore/libraries/spark_examples_2_12_3_1_1.jar","/dbfs/databricks-datasets/README.md","/FileStore/examples/output/"]
      

      Importante

      Hay varias limitaciones para las tareas spark-submit:

      • Solo se pueden ejecutar las tareas spark-submit en clústeres nuevos.
      • Spark-submit no admite el escalado automático del clúster. Para más información sobre el escalado automático, consulte Escalado automático de clústeres.
      • Spark-submit no admite utilidades de Databricks. Para usar utilidades de Databricks, use tareas JAR en su lugar.
    • Python script: en la lista desplegable Source, seleccione una ubicación para el script de Python; puede ser Workspace si el script está en el área de trabajo local o DBFS si el script está ubicado en DBFS o en almacenamiento en la nube. En el cuadro de texto Path, escriba la ruta de acceso al script de Python:

      Workspace: en el cuadro de diálogo Select Python File, vaya al script de Python y haga clic en Confirm. El script debe estar en un repositorio de Databricks.

      DBFS: escriba el URI de un script de Python en DBFS o en almacenamiento en la nube; por ejemplo, dbfs:/FileStore/myscript.py.

    • Delta Live Tables Pipeline: en el menú desplegable Pipeline, seleccione una canalización existente de Delta Live Tables.

      Importante

      Solo puede usar canalizaciones desencadenadas con la tarea Canalización. Las canalizaciones continuas no se admiten como una tarea de trabajo. Para más información sobre las canalizaciones desencadenadas y continuas, consulte Canalizaciones continuas y desencadenadas.

    • Python Wheel: en el cuadro de texto Package name (Nombre del paquete), escriba el paquete que se importará, por ejemplo, myWheel-1.0-py2.py3-none-any.whl. En el cuadro de texto Entry Point (Punto de entrada), escriba la función a la que se llamará al iniciar la rueda. Haga clic en Add (Agregar) en Dependent Libraries (Bibliotecas dependientes) para agregar las bibliotecas necesarias para ejecutar la tarea.

    • SQL: en el menú desplegable SQL task, seleccione Query, Dashboard o Alert.

      Nota

      Query: en el menú desplegable SQL query, seleccione la consulta que se va a ejecutar cuando se ejecute la tarea. En el menú desplegable SQL Warehouse, seleccione una instancia de SQL Warehouse sin servidor para ejecutar la tarea.

      Dashboard: en el menú desplegable SQL dashboard, seleccione un panel que se actualizará cuando se ejecute la tarea. En el menú desplegable SQL Warehouse, seleccione una instancia de SQL Warehouse sin servidor para ejecutar la tarea.

      Alert: en el menú desplegable SQL alert, seleccione que se desencadene una alerta para su evaluación. En el menú desplegable SQL Warehouse, seleccione una instancia de SQL Warehouse sin servidor para ejecutar la tarea.

    • dbt: consulte Uso de dbt en un trabajo de Azure Databricks para obtener un ejemplo detallado de cómo configurar una tarea dbt.

      Importante

      La tarea dbt se encuentra en versión preliminar pública.

  5. Configure el clúster donde se ejecuta la tarea. En la lista desplegable Cluster, seleccione New Job Cluster o Existing All-Purpose Clusters.

    • New Job Cluster: haga clic en Edit en la lista desplegable Cluster y complete la configuración del clúster.
    • Existing All-Purpose Cluster: seleccione un clúster existente en la lista desplegable Cluster. Para abrir el clúster en una página nueva, haga clic en el icono ExternalLink situado a la derecha del nombre y la descripción del clúster.

    Para más información sobre cómo seleccionar y configurar clústeres para ejecutar tareas, consulte Sugerencias para la configuración de clústeres.

  6. Puede pasar parámetros para la tarea. Cada tipo de tarea tiene diferentes requisitos para dar formato y pasar los parámetros.

    • Notebook (Cuaderno): haga clic en Add (Agregar) y especifique la clave y el valor de cada parámetro que se pasará a la tarea. Puede invalidar o agregar parámetros adicionales al ejecutar manualmente una tarea mediante la opción Run a job with different parameters (Ejecutar un trabajo con parámetros diferentes). Los parámetros establecen el valor del widget de cuaderno especificado por la clave del parámetro. Use las variables de parámetro Task para pasar un conjunto limitado de valores dinámicos como parte de un valor de parámetro.
    • JAR: use una matriz de cadenas con formato JSON para especificar los parámetros. Estas cadenas se pasan como argumentos al método Main de la clase Main. Consulte Configuración de parámetros de trabajos JAR.
    • Tarea Spark Submit: los parámetros se especifican como una matriz de cadenas con formato JSON. Conforme a la convención Apache Spark spark-submit, los parámetros de la ruta de acceso JAR se pasan al método Main de la clase Main.
    • Python script: use una matriz de cadenas con formato JSON para especificar los parámetros. Estas cadenas se pasan como argumentos que se pueden analizar mediante el módulo argparse en Python.
    • Python Wheel: en la lista desplegable Parameters, seleccione Positional arguments para escribir parámetros como una matriz de cadenas con formato JSON, o bien seleccione Keyword arguments > Add para escribir la clave y el valor de cada parámetro. Los argumentos posicionales y de palabra clave se pasan a la tarea de Python Wheel como argumentos de línea de comandos.
  7. Para acceder a opciones adicionales, incluidas las bibliotecas dependientes, la directiva de reintentos y los tiempos de espera, haga clic en Advanced Options (Opciones avanzadas). Consulte Edición de tareas.

  8. Haga clic en Crear.

  9. Para establecer opcionalmente la programación del trabajo, haga clic en Edit schedule (Editar programación) en el panel Job details (Detalles del trabajo). Consulte Programación de un trabajo.

  10. Para permitir opcionalmente varias ejecuciones simultáneas del mismo trabajo, haga clic en Edit concurrent runs (Editar ejecuciones simultáneas) en el panel Jobs details (Detalles del trabajo). Consulte Número máximo de ejecuciones simultáneas.

  11. Opcionalmente, para especificar las direcciones de correo electrónico en las que desea recibir las notificaciones sobre los eventos de trabajo, haga clic en el elemento Editar notificaciones del panel Detalles del trabajo. Consulte Notificaciones.

  12. Para controlar opcionalmente los niveles de permiso en el trabajo, haga clic en Edit permissions Editar permisos en el panel Job details (Detalles del trabajo). Consulte Control de acceso a trabajos.

Para agregar otra tarea, haga clic en el botón Agregar tarea debajo de la tarea que acaba de crear para agregar otra tarea. Si ha configurado la opción New Job Cluster (Nuevo clúster de trabajo) se le proporciona una opción de clúster compartido para una tarea anterior. También puede configurar un clúster para cada tarea al crear o editar una tarea. Para más información sobre cómo seleccionar y configurar clústeres para ejecutar tareas, consulte Sugerencias para la configuración de clústeres.

Ejecución de un trabajo

  1. Haga clic en Icono de trabajosTrabajos en la barra lateral.
  2. Seleccione un trabajo y haga clic en la pestaña Runs (Ejecuciones). Puede ejecutar un trabajo inmediatamente o programar el trabajo para que se ejecute más adelante.

Si una o varias tareas de un trabajo con varias tareas no se realizan correctamente, puede volver a ejecutar el subconjunto de tareas incorrectas. Consulte Reparación de una ejecución de trabajo incorrecta.

Ejecución inmediata de un trabajo

Para ejecutar el trabajo inmediatamente, haga clic en el botón Ejecutar ahora.

Sugerencia

Puede realizar una ejecución de prueba de un trabajo con una tarea de cuaderno haciendo clic en Run Now (Ejecutar ahora). Si necesita realizar cambios en el cuaderno, al volver a hacer clic en Run Now (Ejecutar ahora) después de editar el cuaderno, se ejecutará automáticamente la nueva versión del cuaderno.

Ejecución de un trabajo con parámetros diferentes

Puede usar Run Now with Different Parameters (Ejecutar ahora con parámetros diferentes) para volver a ejecutar un trabajo con otros parámetros o valores diferentes para los parámetros existentes.

  1. Haga clic en Blue Down Caret junto a Run Now (Ejecutar ahora) y seleccione Run Now with Different Parameters (Ejecutar ahora con parámetros diferentes) o, en la tabla Active Runs (Ejecuciones activas), haga clic en Run Now with Different Parameters (Ejecutar ahora con parámetros diferentes). Escriba los nuevos parámetros en función del tipo de tarea.
    • Notebook (Cuaderno): puede escribir parámetros como pares clave-valor o como un objeto JSON. Los parámetros proporcionados se combinan con los parámetros predeterminados para la ejecución desencadenada. Puede usar este cuadro de diálogo para establecer los valores de los widgets.
    • JAR y spark-submit: puede escribir una lista de parámetros o un documento JSON. Si elimina claves, se usan los parámetros predeterminados. También puede agregar variables de parámetro de tareas para la ejecución.
  2. Haga clic en Ejecutar.

Reparación de una ejecución de trabajo incorrecta

Puede reparar trabajos de varias tareas con errores o cancelados al ejecutar solo el subconjunto de tareas incorrectas y las tareas dependientes. Dado que las tareas correctas y las tareas que dependen de ellas no se vuelven a ejecutar, esta característica reduce el tiempo y los recursos necesarios para recuperarse de ejecuciones de trabajos incorrectas.

Puede cambiar la configuración del trabajo o de la tarea antes de reparar la ejecución del trabajo. Las tareas incorrectas se vuelven a ejecutar con la configuración actual del trabajo y la tarea. Por ejemplo, si cambia la ruta de acceso a un cuaderno o a una configuración de clúster, la tarea se vuelve a ejecutar con la configuración actualizada del cuaderno o del clúster.

Puede ver el historial de todas las ejecuciones de tareas en la página Detalles de ejecución de la tarea.

Nota

  • Si una o varias tareas comparten un clúster de trabajo, una ejecución de reparación crea un nuevo clúster de trabajo; por ejemplo, si la ejecución original usó el clúster de trabajo my_job_cluster, la primera ejecución de reparación usa el clúster de trabajo nuevo my_job_cluster_v1, lo que le permite ver fácilmente el clúster y la configuración del clúster usadas por la ejecución inicial y las ejecuciones de reparación. La configuración de my_job_cluster_v1 es la misma que la configuración actual de my_job_cluster.
  • La reparación solo se admite con trabajos que organizan dos o más tareas.
  • El valor Duración que se muestra en la pestaña Ejecuciones incluye la hora en que se inició la primera ejecución hasta la hora en que finalizó la última ejecución de reparación. Por ejemplo, si se produjo un error en una ejecución dos veces y se realizó correctamente en la tercera ejecución, la duración incluye el tiempo de las tres ejecuciones.

Para reparar una ejecución de trabajo incorrecta:

  1. Haga clic en Icono de trabajosTrabajos en la barra lateral.
  2. En la columna Name (Nombre), haga clic en un nombre de trabajo. La pestaña Ejecuciones muestra las ejecuciones activas y completadas, incluidas las ejecuciones fallidas.
  3. Haga clic en el vínculo de la ejecución fallida en la columna Hora de inicio de la tabla Ejecuciones completadas (últimos 60 días). Se muestra la página Detalles de la ejecución del trabajo.
  4. Haga clic en Reparar ejecución. Se muestra el cuadro de diálogo Ejecución del trabajo de reparación, enumerando todas las tareas incorrectas y las tareas dependientes que se volverán a ejecutar.
  5. Para agregar o editar parámetros para las tareas que se van a reparar, escriba los parámetros en el cuadro de diálogo Ejecución del trabajo de reparación. Los parámetros que escriba en el cuadro de diálogo Ejecución del trabajo de reparación invalidan los valores existentes. En las ejecuciones de reparación posteriores, puede devolver un parámetro a su valor original al borrar la clave y el valor en el cuadro de diálogo Ejecución del trabajo de reparación.
  6. Haga clic en Ejecución de reparación en el cuadro de diálogo Ejecución del trabajo de reparación.

Ver tarea de historial de ejecución

Para ver el historial de ejecución de una tarea, incluidas las ejecuciones correctas y incorrectas:

  1. Haga clic en una tarea en la página Detalles de ejecución del trabajo. Se muestra la página Detalles de ejecución de la tarea.
  2. Seleccione la tarea que se ejecuta en la lista desplegable del historial de ejecución.

Programación de un trabajo

Para definir una programación para el trabajo:

  1. Haga clic en Edit schedule (Editar programación) en el panel Job details (Detalles del trabajo) y establezca Schedule Type (Tipo de programación) en Scheduled (Programado).

  2. Especifique el período, la hora de inicio y la zona horaria. Opcionalmente, active la casilla Show Cron Syntax (Mostrar sintaxis de cron) para mostrar y editar la programación en Quartz Cron Syntax (Sintaxis Quartz de cron).

    Nota

    • Azure Databricks exige un intervalo mínimo de 10 segundos entre ejecuciones posteriores desencadenadas por la programación de un trabajo independientemente de la configuración de segundos en la expresión cron.
    • Puede elegir una zona horaria que tenga en cuenta el horario de verano o UTC. Si selecciona una zona que tiene en cuenta el horario de verano, se omitirá un trabajo por hora o podría parecer que no se activa durante una o dos horas cuando comienza o finaliza el horario de verano. Para ejecutar cada hora (hora absoluta), elija UTC.
    • El programador de trabajos no está pensado para trabajos de baja latencia. Debido a problemas de red o de la nube, las ejecuciones de trabajos pueden retrasarse ocasionalmente hasta varios minutos. En estas situaciones, los trabajos programados se ejecutarán inmediatamente después de que elk servicio vuelva a estar disponible.
  3. Haga clic en Save(Guardar).

También puede programar un trabajo de cuaderno directamente en la interfaz de usuario del cuaderno.

Pausar y reanudar una programación de trabajo

Para pausar un trabajo, puede:

  • Hacer clic en Pause (Pausar) en el panel Job details (Detalles del trabajo).
  • Haga clic en Edit schedule (Editar programación) en el panel Job details (Detalles del trabajo) y establezca Schedule Type (Tipo de programación) en Manual (Paused) [Manual (Pausado)].

Para reanudar una programación de trabajo en pausa, establezca Schedule Type (Tipo de programación) en Scheduled (Programado).

Visualización de trabajos

Haga clic en Icono de trabajosTrabajos en la barra lateral. Aparece la lista Jobs (Trabajos). En la página Jobs (Trabajos) se enumeran todos los trabajos definidos, la definición del clúster, la programación, si la hay, y el resultado de la última ejecución.

Nota:

Si tiene habilitado el límite de trabajos aumentado para esta área de trabajo, solo se muestran 25 trabajos en la lista Trabajos para mejorar el tiempo de carga de páginas. Use las flechas izquierda y derecha para paginar la lista completa de trabajos.

Puede filtrar trabajos en la lista Trabajos:

  • Mediante palabras clave. Si tiene habilitada la característica de límite de trabajos aumentado para esta área de trabajo, la búsqueda por palabras clave solo se admite para los campos de nombre, identificador de trabajo y etiqueta de trabajo.
  • Seleccionando solo los trabajos que posee.
  • Seleccionando todos los trabajos a los que tiene permisos de acceso. El acceso a este filtro requiere que el control de acceso Trabajos esté habilitado.
  • Uso de etiquetas Para buscar una etiqueta creada solo con una clave, escriba la clave en el cuadro de búsqueda. Para buscar una etiqueta creada con una clave y un valor, puede buscar por la clave, el valor o la clave y el valor. Por ejemplo, para una etiqueta con la clave department y el valor finance, puede buscar department o finance para encontrar trabajos coincidentes. Para buscar por la clave y el valor, escriba la clave y el valor separados por dos puntos; por ejemplo, department:finance.

También puede hacer clic en cualquier encabezado de columna para ordenar la lista de trabajos (descendente o ascendente) por esa columna. Cuando la característica de límite de trabajos aumentado está habilitada, solo puede ordenar por Name, Job ID o Created by. La ordenación predeterminada es por Name en orden ascendente.

Ver de ejecuciones de un trabajo

  1. Haga clic en Icono de trabajosTrabajos en la barra lateral.
  2. En la columna Name (Nombre), haga clic en un nombre de trabajo. La pestaña Ejecuciones se muestra con una tabla de ejecuciones activas y ejecuciones completadas.

Tabla de ejecuciones de un trabajo

Para ver los detalles de la ejecución de un trabajo, haga clic en el vínculo de la ejecución en la columna Hora de inicio de la tabla Ejecuciones completadas (últimos 60 días). Para ver los detalles de la ejecución correcta más reciente de este trabajo, haga clic en Última ejecución correcta (se actualiza automáticamente).

Para cambiar a una vista de matriz, haga clic en Matriz. La vista de matriz muestra un historial de ejecuciones para el trabajo, incluida cada tarea de trabajo.

La fila Ejecuciones de trabajo de la matriz muestra la duración total de la ejecución y el estado de la ejecución. Para ver los detalles de la ejecución, incluida la hora de inicio, la duración y el estado, mantenga el puntero sobre la barra de la fila Ejecuciones de trabajos.

Cada celda de la fila Tareas representa una tarea y el estado correspondiente de la tarea. Para ver los detalles de cada tarea, incluida la hora de inicio, la duración, el clúster y el estado, mantenga el puntero sobre la celda de esa tarea.

Las barras de ejecución de trabajos y de ejecución de tareas están codificadas por colores para indicar el estado de la ejecución. Las ejecuciones correctas son verdes, las ejecuciones incorrectas son rojas y las ejecuciones omitidas son rosas. El alto de las barras de ejecución de trabajos individuales y ejecución de tareas proporciona una indicación visual de la duración de la ejecución.

Matriz de ejecuciones de un trabajo

Azure Databricks mantiene un historial de las ejecuciones de trabajo durante un máximo de 60 días. Si necesita conservar las ejecuciones de trabajos, Databricks recomienda exportar los resultados antes de que expiren. Para más información, consulte Exportación de resultados de ejecución de trabajos.

Visualización de los detalles de ejecución de trabajos

La página de detalles de ejecución del trabajo contiene la salida del trabajo y vínculos a los registros, incluida la información sobre el éxito o error de cada tarea de la ejecución del trabajo. Puede acceder a los detalles de ejecución del trabajo desde la pestaña Runs (Ejecuciones) del trabajo. Para ver los detalles de la ejecución del trabajo en la pestaña Ejecuciones, haga clic en el vínculo de la ejecución de la columna Hora de inicio de la tabla Ejecuciones finalizadas (últimos 60 días). Para volver a la pestaña Runs (Ejecuciones) del trabajo, haga clic en el valor Job ID (Id. de trabajo).

Haga clic en una tarea para ver los detalles de la ejecución de la tarea, incluidos:

  • el clúster que ejecutó la tarea
    • la interfaz de usuario de Spark para la tarea
    • registros de la tarea
    • métricas de la tarea

Haga clic en el valor Job ID (Id. de trabajo) para volver a la pestaña Runs (Ejecuciones) del trabajo. Haga clic en el valor Job run ID (Id. de ejecución del trabajo) para volver a los detalles de ejecución del trabajo.

Ver ejecuciones de trabajos recientes

Puede ver una lista de ejecuciones actualmente en ejecución y completadas recientemente para todos los trabajos de un área de trabajo a las que tiene acceso, incluidas las ejecuciones iniciadas por herramientas de orquestación externas, como Apache Airflow o Azure Data Factory. Para ver la lista de ejecuciones de trabajos recientes:

  1. Haga clic en Icono de trabajosTrabajos en la barra lateral. Aparece la lista Jobs (Trabajos).
  2. Haga clic en la pestaña Ejecuciones del trabajo. Se muestra la lista Ejecuciones de trabajo.

La lista Ejecuciones del trabajo muestra:

  • Hora de inicio de la ejecución.
  • Nombre del trabajo asociado a la ejecución.
  • Nombre de usuario con el que se ejecuta el trabajo.
  • Si la ejecución se desencadenó mediante una programación de trabajo o una solicitud de API, o si se inició manualmente.
  • Tiempo transcurrido para un trabajo que se ejecuta actualmente o el tiempo total de ejecución de una ejecución completada.
  • El estado de la ejecución, ya sea Pending, Running, Skipped, Succeeded, Failed, Terminating, Terminated, Internal Error, Timed Out, Canceled, Canceling o Waiting for Retry.

Para ver los detalles de la ejecución del trabajo, haga clic en el vínculo de la columna Hora de inicio de la ejecución. Para ver los detalles del trabajo, haga clic en el nombre del trabajo en la columna Trabajo.

Exportación de los resultados de la ejecución del trabajo

Puede exportar los resultados de la ejecución del cuaderno y los registros de ejecución de trabajos para todos los tipos de trabajo.

Exportación de resultados de ejecución de cuadernos

Puede conservar las ejecuciones de trabajos exportando sus resultados. Para las ejecuciones de trabajos de cuaderno, puede exportar un cuaderno representado que se pueda importar más adelante en el área de trabajo de Azure Databricks.

Para exportar los resultados de la ejecución del cuaderno para un trabajo con una sola tarea:

  1. En la página de detalles del trabajo, haga clic en el vínculo View Details (Ver detalles) de la ejecución en la columna Run (Ejecución) de la tabla Completed Runs (past 60 days) [Ejecuciones finalizadas (últimos 60 días)].
  2. Haga clic en Export to HTML (Exportar a HTML).

Para exportar los resultados de la ejecución del cuaderno para un trabajo con varias tareas:

  1. En la página de detalles del trabajo, haga clic en el vínculo View Details (Ver detalles) de la ejecución en la columna Run (Ejecución) de la tabla Completed Runs (past 60 days) [Ejecuciones finalizadas (últimos 60 días)].
  2. Haga clic en la tarea del cuaderno que quiere exportar.
  3. Haga clic en Export to HTML (Exportar a HTML).

Exportación de registros de ejecución de trabajos

También puede exportar los registros de la ejecución del trabajo. Puede configurar el trabajo para que entregue automáticamente los registros a DBFS a través de la API de trabajos. Vea el objeto new_cluster.cluster_log_conf en el cuerpo de la solicitud pasado a la operación Create a new job (Crear un trabajo) (POST /jobs/create) en la API de trabajos.

Edición de trabajos

Algunas opciones de configuración están disponibles en el trabajo y otras opciones están disponibles en tareas individuales. Por ejemplo, el número máximo de ejecuciones simultáneas solo se puede establecer en el trabajo, mientras que los parámetros deben definirse para cada tarea.

Para cambiar la configuración de un trabajo:

  1. Haga clic en Icono de trabajosTrabajos en la barra lateral.
  2. En la columna Name (Nombre), haga clic en el nombre de trabajo.

En el panel lateral se muestran los detalles del trabajo. Puede cambiar la programación, la configuración del clúster, las notificaciones y el número máximo de ejecuciones simultáneas, así como agregar o cambiar etiquetas. Si el control de acceso al trabajo está habilitado, también puede editar permisos de trabajo.

Etiquetas

Para agregar etiquetas o atributos clave:valor al trabajo, puede agregar etiquetas al editar el trabajo. Puede usar etiquetas para filtrar trabajos en la lista Trabajos; por ejemplo, puede usar una etiqueta department para filtrar todos los trabajos que pertenecen a un departamento específico.

Nota

Dado que las etiquetas de trabajo no están diseñadas para almacenar información confidencial, como información de identificación personal o contraseñas, Databricks recomienda usar etiquetas solo para valores no confidenciales.

Las etiquetas también se propagan a los clústeres de trabajos creados cuando se ejecuta un trabajo, lo que le permite usar etiquetas con la supervisión del clúster existente.

Para agregar o editar etiquetas, haga clic en + Etiqueta en el panel lateral Detalles del trabajo. Puede agregar la etiqueta como una clave y valor, o bien una etiqueta. Para agregar una etiqueta, escriba la etiqueta en el campo Clave y deje el campo Valor vacío.

Clústeres

Para ver las tareas asociadas a un clúster, mantenga el puntero sobre el clúster en el panel lateral. Para cambiar la configuración del clúster para todas las tareas asociadas, haga clic en Configure (Configurar) en el clúster. Para configurar un nuevo clúster para todas las tareas asociadas, haga clic en Swap (Intercambiar) en el clúster.

Número máximo de ejecuciones simultáneas

Número máximo de ejecuciones paralelas para este trabajo. Azure Databricks omite la ejecución si el trabajo ya ha alcanzado el número máximo de ejecuciones activas al intentar iniciar una nueva ejecución. Establezca este valor por encima del valor predeterminado de 1 para realizar varias ejecuciones del mismo trabajo simultáneamente. Esto es útil, por ejemplo, si desencadena el trabajo con una programación frecuente y quiere permitir que las ejecuciones consecutivas se superpongan entre sí, o bien si quiere desencadenar varias ejecuciones que difieren en sus parámetros de entrada.

Notificaciones

Nota

Las notificaciones establecidas en el nivel de trabajo no se envían cuando se reintentan las tareas con errores. Para recibir una notificación de error después de cada tarea con errores (incluidos todos los reintentos con errores), use notificaciones de tareas en su lugar.

Puede agregar una o varias direcciones de correo electrónico para notificar cuándo comienzan, finalizan o se produce un error en las ejecuciones de este trabajo:

  1. Haga clic en el botón Editar notificaciones.
  2. Haga clic en Agregar.
  3. Escriba una dirección de correo electrónico y haga clic en la casilla de cada tipo de notificación que se quiera que se envíe a esta.
  4. Para escribir otra dirección de correo electrónico para las notificaciones, haga clic en Add (Agregar).
  5. Si no quiere recibir notificaciones sobre las ejecuciones de trabajos que se hayan omitido, marque la casilla correspondiente.
  6. Haga clic en Confirmar.

Integre estas notificaciones de correo electrónico con sus herramientas de notificación favoritas, entre las que se incluyen las siguientes:

Control de acceso a trabajos

El control de acceso a trabajos permite a los propietarios y administradores de trabajos conceder permisos específicos en sus trabajos. Los propietarios de trabajos pueden elegir qué otros usuarios o grupos pueden ver los resultados del trabajo. Los propietarios también pueden elegir quién puede administrar sus ejecuciones de trabajo [Ejecutar ahora y Cancel run permissions (Cancelar permisos de ejecución)].

Para más información, consulte Control de acceso a trabajos.

Edición de tareas

Para establecer las opciones de configuración de tareas:

  1. Haga clic en Icono de trabajosTrabajos en la barra lateral.
  2. En la columna Name (Nombre), haga clic en el nombre de trabajo.
  3. Haga clic en la ficha Tareas.

Dependencias de las tareas

Puede definir el orden de ejecución de las tareas en un trabajo mediante el menú desplegable Depends on. Puede establecer este campo en una o varias tareas del trabajo.

Dependencias de edición de tareas

Nota

Depends on (Depende de) no es visible si el trabajo consta de una sola tarea.

La configuración de dependencias de tareas crea un grafo acíclico dirigido (DAG) de ejecución de tareas, una manera común de representar el orden de ejecución en los programadores de trabajos. Por ejemplo, considere el siguiente trabajo que consta de cuatro tareas:

Diagrama de ejemplo de dependencias de tareas

  • La tarea 1 es la tarea raíz y no depende de ninguna otra tarea.
  • Las tareas 2 y 3 dependen de que la tarea 1 se complete primero.
  • Por último, la tarea 4 depende de que la tarea 2 y la tarea 3 se completen correctamente.

Azure Databricks ejecuta las tareas de subida antes de ejecutar las de bajada, y ejecuta tantas de ellas en paralelo como sea posible. En el diagrama siguiente se muestra el orden de procesamiento de estas tareas:

Flujo de ejemplo de dependencias de tareas

Opciones de configuración de tareas individuales

Las tareas individuales tienen las siguientes opciones de configuración:

En esta sección:

Clúster

Para configurar el clúster donde se ejecuta una tarea, haga clic en la lista desplegable Cluster. Puede editar un clúster de trabajos compartidos, pero no puede eliminar un clúster compartido si lo siguen utilizando otras tareas.

Para más información sobre cómo seleccionar y configurar clústeres para ejecutar tareas, consulte Sugerencias para la configuración de clústeres.

Bibliotecas dependientes

Las bibliotecas dependientes se instalarán en el clúster antes de que se ejecute la tarea. Debe establecer todas las dependencias de tareas para asegurarse de que están instaladas antes de que se inicie la ejecución.

Para agregar una biblioteca dependiente, haga clic en Advanced options (Opciones avanzadas) y seleccione Add Dependent Libraries (Agregar bibliotecas dependientes) para abrir el seleccionador Add Dependent Library (Agregar biblioteca dependiente). Siga las recomendaciones de Library dependencies (Dependencias de biblioteca) para especificar dependencias.

Notificaciones de tareas

A fin de agregar notificaciones por correo electrónico para que la tarea se complete correcta o erróneamente, haga clic en Opciones avanzadas y seleccione Editar notificaciones. Las notificaciones de error se envían en caso de error en la tarea inicial y los reintentos posteriores.

Variables de parámetros de tareas

Puede pasar variables con plantilla a una tarea de trabajo como parte de los parámetros de la tarea. Estas variables se reemplazan por los valores adecuados cuando se ejecuta la tarea del trabajo. Puede usar valores de parámetro de tarea para pasar el contexto sobre una ejecución de trabajo, como el identificador de ejecución o la hora de inicio del trabajo.

Cuando se ejecuta un trabajo, la variable de parámetro de tarea entre llaves dobles se reemplaza y se anexa a un valor de cadena opcional incluido como parte del valor. Por ejemplo, para pasar un parámetro denominado MyJobId con un valor de my-job-6para cualquier ejecución del identificador de trabajo 6, agregue el siguiente parámetro de tarea:

{
  "MyJobID": "my-job-{{job_id}}"
}

El contenido de las llaves dobles no se evalúa como expresiones, por lo que no puede realizar operaciones o funciones entre llaves dobles. El espacio en blanco no se quita dentro de las llaves, por lo que {{ job_id }} no se evaluará.

Se admiten las siguientes variables de parámetro de tarea:

Variable Descripción
{{job_id}} Identificador único asignado a un trabajo.
{{run_id}} Identificador único asignado a una ejecución de trabajo.
{{start_date}} Fecha en que se inició la ejecución de una tarea. El formato es aaaa-mm-dd en la zona horaria UTC.
{{start_time}} Marca de tiempo del inicio de la ejecución después de crear y preparar el clúster. El formato es de milisegundos desde la época de UNIX en la zona horaria UTC, tal y como devuelve System.currentTimeMillis().
{{task_retry_count}} Número de reintentos que se ha intentado ejecutar una tarea si se produce un error en el primer intento. El valor es 0 para el primer intento y se incrementa con cada reintento.
{{parent_run_id}} Identificador único asignado a la ejecución de un trabajo con varias tareas.
{{task_key}} Nombre único asignado a una tarea que forma parte de un trabajo con varias tareas.

Puede establecer estas variables con cualquier tarea al crear, editar o ejecutar un trabajo con parámetros diferentes.

Tiempo de espera

Tiempo máximo de finalización de un trabajo. Si el trabajo no se completa en este tiempo, Azure Databricks establece su estado en "Se agotó el tiempo de espera".

Reintentos

Directiva que determina en qué momento y cuántas veces se reintentan las ejecuciones con error. Para establecer los reintentos de la tarea, haga clic en Advanced options (Opciones avanzadas) y seleccione Edit Retry Policy (Editar directiva de reintentos). El intervalo de reintento se calcula en milisegundos y abarca el periodo de tiempo desde el inicio de la ejecución con errores hasta la ejecución del siguiente reintento.

Nota

Si configura tanto el tiempo de espera como el número de reintentos, el tiempo de espera se aplica a cada reintento.

Clonación de un trabajo

Puede crear rápidamente un nuevo trabajo clonando uno existente. La clonación de un trabajo crea una copia idéntica del trabajo, excepto el identificador del trabajo. En la página del trabajo, haga clic en More... junto al nombre del trabajo y seleccione Clone en el menú desplegable.

Clonación de una tarea

Puede crear rápidamente una nueva tarea clonando una existente.

  1. En la página del trabajo, haga clic en la pestaña Tasks (Tareas).
  2. Seleccione la tarea que quiere clonar.
  3. Haga clic en Jobs Vertical Ellipsis y seleccione Clone task (Clonar tarea).

Eliminación de un trabajo

Para eliminar un trabajo, en la página del trabajo, haga clic en More... junto al nombre del trabajo y seleccione Delete en el menú desplegable.

Eliminación de una tarea

Para eliminar una tarea:

  1. Haga clic en la ficha Tareas.
  2. Seleccione la tarea que se va a eliminar.
  3. Haga clic en Jobs Vertical Ellipsis y seleccione Remove task (Eliminar tarea).

Copia de la ruta de acceso a una tarea

Para copiar la ruta de acceso a una tarea, por ejemplo, una ruta de acceso del cuaderno:

  1. Haga clic en la ficha Tareas.
  2. Seleccione la tarea que contiene la ruta de acceso que se copiará.
  3. Haga clic en Jobs Copy Icon junto a la clave principal para copiarla en el portapapeles.

Ejecución de trabajos mediante cuadernos en un repositorio de Git remoto

Importante

Esta característica está en versión preliminar pública.

Puede ejecutar trabajos mediante cuadernos ubicados en un repositorio de Git remoto. Esta característica simplifica la creación y administración de trabajos de producción y automatiza la implementación continua:

  • No es necesario crear un repositorio de producción independiente en Azure Databricks, administrar permisos para él y mantenerlo actualizado.
  • Puede evitar cambios accidentales en un trabajo de producción, como las modificaciones locales en el repositorio de producción o en el cambio de rama.
  • El proceso de definición de trabajo tiene un único origen real en el repositorio remoto.

Para usar cuadernos en un repositorio de Git remoto, debe configurar el control de código fuente con Databricks Repos.

Para crear una tarea mediante cuadernos ubicados en un repositorio de Git remoto:

  1. En el menú desplegable Type, seleccione Notebook.

  2. En el menú desplegable Source, seleccione Git provider. En el cuadro de diálogo aparece Información de Git.

  3. En el cuadro de diálogo Información de Git, escriba los detalles del repositorio.

    En Ruta de acceso, escriba una ruta de acceso relativa a la ubicación del cuaderno, como etl/notebooks/.

    Cuando escriba la ruta de acceso relativa, no comience con / o ./ y no incluya la extensión de archivo del cuaderno, como .py.

Las tareas del cuaderno adicionales que están en un trabajo multitarea pueden hacer referencia a la misma confirmación en el repositorio remoto de una de las maneras siguientes:

  • sha de $branch/head cuando git_branch se ha establecido
  • sha de $tag cuando git_tag se ha establecido
  • el valor de git_commit

Procedimientos recomendados

En esta sección:

Sugerencias para la configuración de clústeres

La configuración del clúster es importante cuando se pone en funcionamiento un trabajo. A continuación se proporcionan instrucciones generales sobre cómo elegir y configurar clústeres de trabajos, así como recomendaciones para tipos de trabajo específicos.

Uso de clústeres de trabajos compartidos

Para optimizar el uso de recursos con trabajos que orquestan varias tareas, use clústeres de trabajos compartidos. Un clúster de trabajos compartidos permite que varias tareas del mismo trabajo reutilicen el clúster. Puede usar un único clúster de trabajos para ejecutar todas las tareas que forman parte del trabajo o varios clústeres de trabajos optimizados para cargas de trabajo específicas. Para usar un clúster de trabajos compartidos:

  1. Seleccione New Job Clusters (Nuevos clústeres de trabajos) al crear una tarea y complete la configuración del clúster.
  2. Seleccione el nuevo clúster al agregar una tarea al trabajo o cree un nuevo clúster de trabajos. Cualquier clúster que configure al seleccionar New Job Clusters (Nuevos clústeres de trabajos) estará disponible para cualquier tarea del trabajo.

Un clúster de trabajos compartidos está limitado a una sola ejecución del trabajo y no lo pueden usar otros trabajos o ejecuciones del mismo trabajo.

En una configuración de clúster de trabajos compartidos no se pueden usar las bibliotecas. Debe agregar bibliotecas dependientes en la configuración de tareas.

Selección del tipo de clúster correcto para su trabajo

  • Los nuevos clústeres de trabajos son clústeres dedicados para la ejecución de un trabajo o tarea. Un clúster de trabajos compartido se crea e inicia cuando se inicia y finaliza la primera tarea que usa el clúster después de que se complete la última tarea con el clúster. El clúster no finaliza cuando está inactivo, sino que lo hace una vez que se han completado todas las tareas que lo usan. Si se produce un error en un clúster de trabajos compartidos o este termina antes de que finalicen todas las tareas, se crea un nuevo clúster. Un clúster con ámbito en una sola tarea se crea e inicia cuando esta se inicia y finaliza cuando la misma se completa. En producción, Databricks recomienda usar nuevos clústeres con ámbito de tarea o compartidos para que cada trabajo o tarea se ejecute en un entorno completamente aislado.
  • Cuando se ejecuta una tarea en un nuevo clúster, la tarea se trata como una carga de trabajo de ingeniería de datos (tarea), sujeta a los precios de carga de trabajo de tareas. Cuando se ejecuta una tarea en un clúster de uso general existente, la tarea se trata como una carga de trabajo de análisis de datos (todos los propósitos), sujeta a los precios de cargas de trabajo de uso general.
  • Si selecciona un clúster existente finalizado y el propietario del trabajo tiene permisosCan Restart, Azure Databricks inicia el clúster cuando el trabajo está programado para ejecutarse.
  • Los clústeres de uso general existentes funcionan mejor para tareas como la actualización de paneles a intervalos regulares.

Uso de un grupo para reducir las horas de inicio del clúster

Para reducir la hora de inicio del nuevo clúster de trabajos, cree un grupo y configure el clúster del trabajo para que lo use.

Sugerencias para trabajos de Notebook

La salida total de la celda del cuaderno (la salida combinada de todas las celdas del cuaderno) está sujeta a un límite de tamaño de 20 MB. Además, la salida de celda individual está sujeta a un límite de tamaño de 8 MB. Si el tamaño de la salida total de la celda supera los 20 MB, o si la salida de una celda individual es mayor que 8 MB, la ejecución se cancela y se marca como con errores.

Si necesita ayuda para encontrar las celdas que están cerca o fuera del límite, ejecute el cuaderno en un clúster de uso general y use esta técnica de autoguardado del cuaderno.

Tareas de streaming

No se debe establecer nunca el número máximo de ejecuciones simultáneas de los trabajos de Spark Streaming en mayor que 1. Los trabajos de streaming deben establecerse para ejecutarse mediante la expresión cron "* * * * * ?" (cada minuto).

Puesto que una tarea de streaming se ejecuta continuamente, siempre debe ser la tarea final de un trabajo.

Trabajos JAR

Al ejecutar un trabajo de JAR, tenga en cuenta lo siguiente:

Límites de tamaño de salida

La salida del trabajo, como la salida del registro emitida a stdout, está sujeta a un límite de tamaño de 20 MB. Si la salida total tiene un tamaño mayor, la ejecución se cancela y se marca como con errores.

Para evitar alcanzar este límite, puede impedir que stdout se devuelva desde el controlador a Azure Databricks estableciendo la configuración para Spark de spark.databricks.driver.disableScalaOutput en true. De forma predeterminada, el valor de marca es false. La marca permite controlar la salida de celda para los trabajos JAR y los cuadernos de Scala. Si la marca está habilitada, Spark no devuelve los resultados de la ejecución del trabajo al cliente. La marca no afecta a los datos escritos en los archivos de registro del clúster. Solo se recomienda establecer esta marca en clústeres de trabajos para trabajos JAR, ya que deshabilitará los resultados del cuaderno.

Uso del objeto compartido SparkContext

Dado que Azure Databricks es un servicio administrado, es posible que sea necesario realizar algunos cambios de código para asegurarse de que los trabajos de Apache Spark se ejecutan correctamente. Los programas de trabajo de JAR deben usar la API SparkContext compartida para obtener el SparkContext. Dado que Azure Databricks inicializa SparkContext, se producirá un error en los programas que invocan new SparkContext(). Para obtener SparkContext, use solo el objeto compartido SparkContext creado por Azure Databricks:

val goodSparkContext = SparkContext.getOrCreate()
val goodSparkSession = SparkSession.builder().getOrCreate()

También hay varios métodos que debe evitar al usar el objeto compartido SparkContext.

  • No llame a SparkContext.stop().
  • No llame a System.exit(0) ni a sc.stop() al final del programa Main. Esto puede provocar un comportamiento indefinido.

Uso de bloques try-finally para la limpieza de trabajos

Considere un archivo JAR que consta de dos partes:

  • jobBody(), que contiene la parte principal del trabajo.
  • jobCleanup() que se debe ejecutar después de jobBody() si esa función se ha ejecutado correctamente o ha devuelto una excepción.

Por ejemplo, jobBody() puede crear tablas y puede usar jobCleanup() para quitarlas.

La mejor manera de asegurarse de que se llama al método de limpieza es colocar un bloque try-finally en el código:

try {
  jobBody()
} finally {
  jobCleanup()
}

No debe intentar limpiar con sys.addShutdownHook(jobCleanup) o con el código siguiente:

val cleanupThread = new Thread { override def run = jobCleanup() }
Runtime.getRuntime.addShutdownHook(cleanupThread)

Debido a la forma en que se administra la duración de los contenedores de Spark en Azure Databricks, los enlaces de apagado no se ejecutan de forma confiable.

Configuración de parámetros de trabajos JAR

Los parámetros se pasan a trabajos JAR con una matriz de cadenas JSON. Vea el objeto spark_jar_task en el cuerpo de la solicitud pasado a la operación Create a new job (Crear un trabajo) (POST /jobs/create) en la API de trabajos. Para acceder a estos parámetros, inspeccione la matriz String que se pasa a la función main.

Dependencias de biblioteca

El controlador de Spark tiene determinadas dependencias de biblioteca que no se pueden invalidar. Estas bibliotecas tienen prioridad sobre cualquiera de las bibliotecas que entren en conflicto con ellas.

Para obtener la lista completa de las dependencias de la biblioteca de controladores, ejecute el siguiente comando dentro de un cuaderno conectado a un clúster de la misma versión de Spark (o el clúster con el controlador que quiere examinar).

%sh
ls /databricks/jars

Administración de dependencias de biblioteca

Una buena regla general cuando se trabaja con dependencias de biblioteca al crear archivos JAR para trabajos es enumerar Spark y Hadoop como dependencias provided. En Maven, agregue Spark y Hadoop como dependencias proporcionadas, como se muestra en el ejemplo siguiente:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>2.3.0</version>
  <scope>provided</scope>
</dependency>
<dependency>
  <groupId>org.apache.hadoop</groupId>
  <artifactId>hadoop-core</artifactId>
  <version>1.2.1</version>
  <scope>provided</scope>
</dependency>

En sbt, agregue Spark y Hadoop como dependencias proporcionadas, como se muestra en el ejemplo siguiente:

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.0" % "provided"
libraryDependencies += "org.apache.hadoop" %% "hadoop-core" % "1.2.1" % "provided"

Sugerencia

Especifique la versión correcta de Scala para las dependencias en función de la versión que esté ejecutando.