Programación y orquestación de flujos de trabajo
Los flujos de trabajo de Databricks proporcionan una colección de herramientas que permiten programar y organizar tareas de procesamiento de datos en Azure Databricks. Los flujos de trabajo de Databricks se usan para configurar trabajos de Databricks.
En este artículo se presentan conceptos relacionados con la administración de cargas de trabajo de producción mediante trabajos de Databricks.
Nota:
Delta Live Tables proporciona una sintaxis declarativa para crear canalizaciones de procesamiento de datos. Consulte ¿Qué es Delta Live Tables?
¿Qué son los trabajos de Databricks?
Un trabajo de Databricks permite configurar tareas para que se ejecuten en un entorno de proceso especificado según una programación especificada. Junto con las canalizaciones de Delta Live Tables, los trabajos son la herramienta principal que se usa en Azure Databricks para implementar el procesamiento de datos y la lógica de aprendizaje automático en producción.
Los trabajos pueden variar en complejidad, desde una sola tarea que ejecuta un cuaderno de Databricks hasta miles de tareas que se ejecutan con la lógica condicional y las dependencias.
¿Cómo puedo configurar y ejecutar trabajos?
Puede crear y ejecutar un trabajo mediante la interfaz de usuario de trabajos, la CLI de Databricks 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 trabajos mediante la interfaz de usuario, la CLI, la API y las notificaciones (por ejemplo, correo electrónico, destino de webhook o notificaciones de Slack).
Para obtener información sobre cómo usar la CLI de Databricks, consulte ¿Qué es la CLI de Databricks? Para más información sobre el uso de la API de trabajos, consulte la API de trabajos.
¿Cuál es la configuración mínima necesaria para un trabajo?
Todos los trabajos de Azure Databricks requieren lo siguiente:
- Un código fuente que contiene lógica que se va a ejecutar.
- Un recurso de proceso para ejecutar la lógica. El recurso de proceso puede ser un proceso sin servidor, un proceso de trabajos clásico o un proceso multiuso. Consulte Uso del proceso de Azure Databricks con los trabajos.
- Una programación especificada para cuándo se debe ejecutar el trabajo o un desencadenador manual.
- Un nombre único.
Nota:
Si desarrolla el código en cuadernos de Databricks, puede usar el botón Programar para configurar ese cuaderno como trabajo. Consulte Creación y administración de trabajos de cuaderno programados.
¿Qué es una tarea?
Una tarea representa una unidad de lógica en un trabajo. Las tareas pueden variar en complejidad e incluir lo siguiente:
- Un cuaderno
- Un archivo JAR
- Una consulta SQL
- Una canalización DLT
- Otro trabajo
- Tareas de flujo de control
Puede controlar el orden de ejecución de las tareas al especificar las dependencias entre ellas. Puede configurar tareas para que se ejecuten en secuencia o en paralelo.
Los trabajos interactúan con la información de estado y los metadatos de las tareas, pero el ámbito de las tareas están aislados. Puede usar los valores de tarea para compartir contexto entre tareas programadas. Consulte Uso compartido de información entre tareas en un trabajo de Azure Databricks.
¿Qué opciones de flujo de control están disponibles para los trabajos?
Al configurar trabajos y tareas dentro de trabajos, puede personalizar la configuración que controla cómo se ejecutan el trabajo completo y las tareas individuales.
Tipos de desencadenador
Debe especificar un tipo de desencadenador al configurar un trabajo. Puede elegir entre los siguientes tipos de desencadenador:
También puede optar por desencadenar manualmente el trabajo, pero esto se reserva principalmente para casos de uso específicos, como:
- Uso de una herramienta de orquestación externa para desencadenar trabajos mediante llamadas a la API de REST.
- Tiene un trabajo que se ejecuta rara vez y que requiere un humano en el bucle para la validación o la resolución de problemas de calidad de datos.
- Está ejecutando una carga de trabajo que solo debe ejecutarse una o varias veces, como una migración.
Consulte Desencadenar trabajos cuando llegan nuevos archivos.
Reintentos
Reintentos especifica cuántas veces se debe volver a ejecutar un trabajo o tarea determinado si se produce un error en el trabajo con un mensaje de error. Los errores son a menudo transitorios y se resuelven mediante el reinicio, y algunas características de Azure Databricks, como la evolución de esquemas con Structured Streaming, asumen que se ejecutan trabajos con reintentos para restablecer el entorno y permitir que continúe un flujo de trabajo.
Aparece una opción para configurar reintentos en la interfaz de usuario para contextos admitidos. que incluyen la siguiente información:
- Puede especificar reintentos para todo un trabajo, lo que significa que todo el trabajo se reinicia si falla alguna tarea.
- Puede especificar reintentos para una tarea, en cuyo caso la tarea se reinicia hasta el número de veces especificado si encuentra un error.
Cuando se ejecuta en modo de desencadenador continuo, Databricks vuelve a intentarlo automáticamente con retroceso exponencial. Consulte ¿Cómo se controlan los errores para trabajos continuos?.
Ejecución de tareas condicionales
Puede usar el tipo de tareaEjecutar si para especificar condicionales para tareas posteriores en función del resultado de otras tareas. Agregue tareas al trabajo y especifique tareas dependientes del nivel superior. En función del estado de esas tareas, puede configurar una o varias tareas posteriores para que se ejecuten. Los trabajos admiten las siguientes dependencias:
- Todo correcto
- Al menos una correcta
- No se pudo realizar ninguna
- Todo listo
- Al menos un error
- Todos con errores
Consulte Ejecutar tareas condicionalmente en un trabajo de Azure Databricks
Tareas condicionales If/else
Puede usar el tipo de tarea If/else para especificar condicionales en función de algún valor. Consulte Agregar lógica de bifurcación al trabajo con la tarea condición If/else
Los trabajos admiten taskValues
que define dentro de la lógica y permiten devolver los resultados de algún cálculo o estado de una tarea al entorno de trabajos. Puede definir condiciones If/else contra taskValues
, parámetros de trabajo o valores dinámicos.
Azure Databricks admite los siguientes operandos para los condicionales:
==
!=
>
>=
<
<=
Consulte también:
- Uso compartido de información entre tareas en un trabajo de Azure Databricks
- Transferencia de contexto sobre las ejecuciones de trabajos en tareas de trabajo
- Adición de parámetros para todas las tareas de trabajo
Para cada tarea
Use la tarea For each
para ejecutar otra 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. Se admiten varios métodos para pasar parámetros a la tarea anidada.
Consulte Ejecución de una tarea parametrizada de trabajo de Azure Databricks en bucle.
Umbral de duración
Puede especificar un umbral de duración para enviar una advertencia o detener una tarea o un trabajo si se supera una duración especificada. Entre los ejemplos de cuándo es posible que desee configurar esta opción se incluyen los siguientes:
- Tiene tareas que son propensas a quedarse bloqueadas en un estado bloqueado.
- Debe advertir a un ingeniero si se supera un contrato de nivel de servicio para un flujo de trabajo.
- Quiere producir un error en un trabajo configurado con un clúster grande para evitar costos inesperados.
Simultaneidad
La mayoría de los trabajos se configuran con la simultaneidad predeterminada de un trabajo simultáneo. Esto significa que si una ejecución de trabajo anterior no se ha completado en el momento en que se debe desencadenar un nuevo trabajo, se omite la siguiente ejecución del trabajo.
Hay algunos casos de uso para aumentar la simultaneidad, pero la mayoría de las cargas de trabajo no requieren modificar esta configuración.
¿Cómo puedo supervisar los trabajos?
Puede recibir notificaciones cuando se inicia un trabajo o tarea, se completa o se produce un error. Puede enviar notificaciones a una o varias direcciones de correo electrónico o destinos del sistema. Consulte Adición de notificaciones por correo electrónico y sistema para eventos de trabajo.
Las tablas del sistema incluyen un esquema de lakeflow
en el que puede ver registros relacionados con la actividad del trabajo en su cuenta. Vea Referencia de la tabla del sistema de trabajos.
También puede unir las tablas del sistema de trabajos con tablas de facturación para supervisar el costo de los trabajos en toda la cuenta. Vea Supervisar los costos de trabajo con tablas del sistema.
Limitaciones
Existen las siguientes limitaciones:
- Un área de trabajo está limitada a 1000 ejecuciones de tareas 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.
- Un área de trabajo puede contener hasta 12 000 trabajos guardados.
- Un trabajo puede contener hasta 100 tareas.
¿Puedo administrar flujos de trabajo mediante programación?
Databricks proporciona herramientas y API que permiten programar y organizar los flujos de trabajo mediante programación, incluidos los siguientes:
- CLI de Databricks
- Conjuntos de recursos de Databricks
- Extensión de Databricks para Visual Studio Code
- SDK de Databricks
- API de REST de trabajos
Para obtener más información sobre las herramientas de desarrollo, consulte Herramientas de desarrollo e instrucciones.
Orquestación de flujos de trabajo con Apache AirFlow
Puede usar Apache Airflow para administrar y programar los flujos de trabajo de datos. Con Airflow, define el flujo de trabajo en un archivo de Python y Airflow administra la programación y la ejecución del flujo de trabajo. Consulte Orquestación de trabajos de Azure Databricks con Apache Airflow.
Orquestación de flujos de trabajo con Azure Data Factory
Azure Data Factory (ADF) es un servicio de integración de datos en la nube que permite componer servicios de almacenamiento, traslado y procesamiento de datos en canalizaciones de datos automatizadas. Puede usar ADF para organizar un trabajo de Azure Databricks como parte de una canalización de ADF.
Para obtener información sobre cómo ejecutar un trabajo mediante la actividad web de ADF, incluido cómo autenticarse en Azure Databricks desde ADF, consulte Aprovechamiento de la orquestación de trabajos de Azure Databricks desde Azure Data Factory.
ADF también proporciona compatibilidad integrada para ejecutar cuadernos de Databricks, scripts de Python o código empaquetado en JAR en una canalización de ADF.
Para obtener información sobre cómo ejecutar un cuaderno de Databricks en una canalización de ADF, consulte Ejecución de un cuaderno de Databricks con la actividad del cuaderno de Databricks en Azure Data Factory, seguido de Transformación de datos mediante la ejecución de un cuaderno de Databricks.
Para obtener información sobre cómo ejecutar un script de Python en una canalización de ADF, consulte Transformación de datos mediante la ejecución de una actividad de Python en Azure Databricks.
Para más información sobre cómo ejecutar código empaquetado en un archivo JAR en una canalización de ADF, consulte Transformación de datos mediante la ejecución de una actividad JAR en Azure Databricks.