Son diferentes las posibilidades de ejecutar notebooks de Databricks pero dependerá de la tecnología o herramienta con la que más familiarizado te encuentres, pero… ¿se está haciendo correctamente? En este post veremos diferentes servicios para ejecutar procesos de Databricks tal como, Azure DataFactory y Airflow.
¡Comenzamos!
Hay diferentes componentes de orquestación integrados en Databricks, pero no es la única forma de ejecución de estos procesos. Existen otras herramientas externas como Azure Data Factory y Airflow que son capaces de conectarse a Databricks y procesar de forma análoga, con ciertas excepciones.
A continuación, describimos las diferentes tecnologías para ejecutar procesos de Databricks:
Pipelines de Azure Data Factory
Azure Data Factory incluye más de 90 conectores de fuentes de datos integrados y ejecuta sin problemas Azure Databricks Notebooks.
Una de las ventajas de orquestar notebooks a partir de Azure Data Factory es su facilidad de uso, construyendo un servicio vinculado al área de trabajo de Databricks y creando la actividad de Notebook disponible en el panel de Pipelines; así como la integración con el resto de las actividades del pipeline. Por el contrario, la creación de un servicio vinculado con su respectiva configuración no es tarea sencilla.
Las actividades de canalización externas se administran en el entorno de ejecución de integración, pero se procesan en servicios vinculados.
El precio de Azure Integration Runtime es, a fecha de esta publicación, de $0.00025/hora, el precio de Azure Managed VNET Integration Runtime es de $1/hora (hasta 800 actividades de pipeline concurrentes) y el precio de Self-Histed Integration Runtime es de $0.0001/hora.
Las formas de orquestar procesos de Databricks desde ADF se detallan a continuación:
Ejecución de notebooks de Databricks
Azure Data Factory incluye una actividad denominada Notebook para realizar la llamada a un cuaderno alojado en Databricks. Con el servicio vinculado de Databricks y la ruta de acceso al cuaderno se puede realizar la ejecución de la tarea:
Uno de los desafíos que nos encontramos a la hora de orquestar notebooks de Databricks desde ADF es su iteración. Esto se consigue a partir de la tarea ForEach disponible como actividad en los pipelines.
• Si el servicio vinculado está asociado a un clúster interactivo, el coste es muy elevado con respecto a un clúster de trabajo. Este clúster se levantará en la primera iteración y luego estará disponible para el resto del proceso. Hay que destacar que se debe tener en cuenta en la configuración de cuántos minutos se indiquen para apagar el clúster después de su inactividad.
• Si el servicio vinculado está asociado a un clúster de trabajo se abaratan costes respecto al clúster iterativo, pero ralentiza el proceso porque levanta una instancia en cada iteración.
Una manera de evitar el bucle en ADF es la creación de un cuaderno principal, la llamada a todos los cuadernos secundarios y el uso de la actividad del cuaderno de Databricks.
Cabe destacar que se pueden realizar ejecuciones de notebooks en paralelo o secuencial dependiendo de la finalidad del proceso.
Ejecución de jobs de Databricks
Hay una manera de ejecutar un flujo de trabajo de Databricks desde Azure Data Factory que no requiere otras tecnologías: el servicio Azure Databricks proporciona el endpoint de trabajos como parte de su API REST a la que se puede llamar desde Azure Data Factory mediante Web Activity.
A continuación, se muestra una posible orquestación de los jobs de Databricks utilizando la actividad Web de Data Factory:
El pipeline tiene tres parámetros obligatorios:
• JobID: es el identificador del trabajo de Azure Databricks que se encuentra en la pantalla principal de la interfaz de usuario de trabajos de Azure Databricks.
• DatabricksWorkspaceID: es el identificador del espacio de trabajo que se puede encontrar en la URL del espacio de trabajo de Azure Databricks.
• WaitSeconds: es la cantidad de segundos que se deben esperar entre cada verificación del estado del trabajo.
La actividad Until se usará para comprobar el estado de ejecución del trabajo de Azure Databricks hasta que se complete. Este proceso es asíncrono, es decir, se debe esperar cierto tiempo para determinar si la ejecución del job ha terminado, lo que conlleva un coste en tiempo.
Workflows de Databricks
Databricks Workflows es un servicio de orquestación administrado totalmente integrado con la plataforma de datos de Databricks, por lo que:
• Brinda una mejor capacidad de observación que cualquier herramienta de orquestación externa.
• No necesita mantener, actualizar o solucionar problemas de otra herramienta independiente para la orquestación.
• Mantiene el control al obtener una vista completa de cada ejecución del flujo de trabajo.
• Se pueden configurar notificaciones para alertar a los equipos sobre posibles incidencias.
La orquestación con flujos de trabajo de Databricks ofrece una mejor relación precio/rendimiento para sus cargas de trabajo de producción automatizadas. Con clústeres de trabajo automatizados se obtienen ahorros de coste significativos, ya que tienen un precio menor y sólo se ejecutan cuando se programa un trabajo. De este modo, no se paga por recursos no utilizados. Además, los clústeres de trabajos compartidos permiten reutilizar los recursos informáticos para múltiples tareas, de modo que se puede optimizar el uso de los recursos.
El coste de los trabajos de Databricks depende de algunos factores, como:
• El plan de actuación.
• El proveedor de servicios en la nube.
• La región de despliegue.
Los trabajos de Databricks se facturan en función del uso activo de recursos computacionales para las ejecuciones de trabajos, con un coste de aproximadamente $0,30 y $0,50 por DBU para Job clúster y Severless respectivamente (a fecha de publicación).
Recientemente, se ha incluido en los workflows la actividad ForEach que permite iterar procesos. A diferencia de la orquestación en ADF, se evita:
• La actividad asincrónica del proceso de Azure Data Factory, reduciendo tiempo de ejecución.
• La implementación del proceso con un clúster interactivo con el que se ejecutaba el bucle en Azure Data Factory, reduciendo el coste.
• El coste computacional y el tiempo de programación que generaban los bucles escritos en los notebooks.
Unas de las últimas novedades que ha publicado Databricks es Databricks Lakeflow (en preview), una solución unificada e inteligente para la ingeniería de datos que proporciona computación sin servidor y gobernanza unificada con Unity Catalog.
Algunos de los aspectos a destacar de esta solución son:
• Incluye nuevos conectores nativos y altamente escalables.
• Se puede transformar datos en lotes y en streaming utilizando SQL estándar y Python.
• Modo en tiempo real para Apache Spark.
• Organizar y supervisar flujos de trabajo e implementarlos en producción mediante CI/CD.
Apache Airflow
Apache Airflow es una plataforma de gestión de flujos de trabajo de código abierto ampliamente utilizada que permite la composición y programación de diversos flujos de trabajo. También cuenta con una interfaz de usuario integrada que permite el seguimiento en tiempo real del progreso de la ejecución del flujo de trabajo.
Se puede escalar para adaptarse a cualquier cantidad de flujos de trabajo, mejorar la eficiencia de los recursos y optimizar el flujo de trabajo con la ejecución paralela de tareas. La conexión de Airflow con Databricks le permite aprovechar el motor Spark optimizado que ofrece Databricks con las funciones de programación de Airflow.
Hay varios requisitos a tener en cuenta para la integración entre Airflow y Databricks:
• Requiere la versión 2.5.0 o posterior de Airflow.
• Airflow requiere Python 3.8, 3.9, 3.10 o 3.11
Las tareas de procesamiento se pueden programar y orquestar, tanto con Apache Airflow como con el componente Jobs de Databricks. Ambos sistemas ofrecen:
• Mecanismos para escalar la potencia de procesamiento, con Airflow según el diseño del flujo de trabajo y mediante el escalado de los recursos de Apache Spark utilizados para un trabajo en Databricks.
• Integración con una gran cantidad de sistemas de terceros populares, interactuando con diferentes bases de datos y sistemas de almacenamiento o servicios externos utilizados para el procesamiento.
• Capacidad de monitoreo y notificación, cubriendo las necesidades habituales de los propietarios de procesos para realizar un seguimiento del estado del proceso.
Hay una variedad de operadores de Airflow disponibles para la comunicación con Databricks. Los trabajos se pueden activar inmediatamente con la clase DatabricksRunNowOperator o se pueden enviar a ejecución asincrónica con DatabrickSubmitRunOperator.
El coste operativo de Apache Airflow puede depender de varios factores, siendo la infraestructura el más importante. Se necesitan servidores o recursos en la nube para alojarlo, así como el conocimiento y el soporte de expertos.
Apache Airflow con Azure Data Factory
El servicio Workflow Orchestration Manager de Azure Data Factory es una forma sencilla y eficiente de crear y administrar entornos Apache Airflow. Ofrece DAG de Python basados en Airflow para definir el proceso de orquestación de datos. Si se tiene experiencia en Airflow o se está utilizando Apache Airflow, es posible que se prefiera utilizar Workflow Orchestration Manager en lugar de los pipelines. Por el contrario, si no desea escribir o administrar DAG, se puede usar pipelines.
Las funciones más destacables son:
• Implementación rápida y sencilla.
• Escalado automático de los nodos de Apache Airflow.
• Integración con Microsoft Entra.
• Cifrado automático de los metadatos mediante claves administradas por Azure.
• Exportación a Azure Monitor de todos los registros generados por Workflow Orchestration Manager.
La orquestación de Airflow desde ADF tiene una serie de limitaciones:
• Workflow Orchestration Manager en otras regiones está disponible por GA.
• Las fuentes de datos que se conectan a través de Airflow deben ser accesibles a través de un endpoint.
• Actualmente, no se admiten los DAG que se encuentran dentro de un almacenamiento de blobs en una red virtual o detrás de un firewall. En su lugar, es recomendable utilizar la función de sincronización de Git de Workflow Orchestration Manager.
• La importación de DAGS desde Azure Key Vault no se admite en LinkedServices.
Conclusión
Azure Data Factory permite la integración de ejecución de procesos de Databricks a través de notebooks o workflows, pero se ha analizado que tiene ciertos inconvenientes, como la llamada asíncrona o la iteración de los notebooks a través de bucles. Si esa es la aproximación que se quiere realizar, se recomienda Databricks Workflows con el nuevo componente ForEach que han publicado recientemente.
Databricks tiene un alcance mucho más amplio que Airflow cuando se trata de albergar el desarrollo interactivo del procesamiento y análisis de datos, incluidos escenarios de IA y aprendizaje automático. Cuando estos procesos son el enfoque principal y se buscan maneras de pasar de ejecuciones manuales a programadas, Databricks Jobs es la mejor opción para administrar sus flujos de trabajo. Por esta razón, Databricks Jobs está más cerca de los datos que procesan de lo que lograría con los componentes nativos de Apache Airflow.
Databricks Jobs ofrece compatibilidad nativa con trabajos en ejecución continua y canales de procesamiento en tiempo real con la función Delta Live Tables. Se podría lograr un comportamiento similar con la activación de alta frecuencia a través de Airflow, pero implicaría más latencia y sobrecarga de comunicación en el proceso.
La implementación y programación de canalizaciones de datos de forma nativa en Databrick puede ser una opción viable si la mayor parte de los datos ya forman parte de un entorno Lakehouse impulsado por Databricks o si los trabajos ingieren principalmente datos para de ese entorno. Sin embargo:
• La cantidad de tareas que se pueden programar con Databricks está técnicamente limitada por aproximadamente 1.000 trabajos diferentes, por lo que las necesidades de programación a gran escala pueden requerir una programación externa o un enfoque mixto.
• Si las tareas programadas se implementan en Databricks y se requiere una orquestación con condiciones externas, previas o posteriores, Airflow o Data Factory podrían ser la opción más adecuada como sistema principal.