Si eres nuevo en Delta Live Tables, antes de leer esta entrada de blog, te recomendamos leer Introducción a Delta Live Tables, que explica cómo puedes crear pipelines escalables y confiables utilizando definiciones y sentencias declarativas de ETL de Delta Live Tables (DLT).
Delta Live Tables (DLT) ofrece una plataforma robusta para construir pipelines de procesamiento de datos confiables, mantenibles y probables dentro de Databricks. Al aprovechar su marco declarativo y aprovisionar automáticamente cómputo serverless optimizado, DLT simplifica las complejidades de la transmisión, transformación y gestión de datos, ofreciendo escalabilidad y eficiencia para flujos de trabajo de datos modernos.
Tradicionalmente, los pipelines de DLT han ofrecido una forma eficiente de ingerir y procesar datos como Tablas de Streaming o Vistas Materializadas gobernadas por Unity Catalog. Si bien este enfoque satisface la mayoría de las necesidades de procesamiento de datos, hay casos en los que los pipelines de datos deben conectarse con sistemas externos o usar sinks de Structured Streaming en lugar de escribir en Tablas de Streaming o Vistas Materializadas.
La introducción de la nueva API de Sinks en DLT aborda esto al permitir a los usuarios escribir datos procesados en flujos de eventos externos, como Apache Kafka, Azure Event Hubs, así como escribir en una Tabla Delta. Esta nueva capacidad amplía el alcance de los pipelines de DLT, permitiendo una integración perfecta con plataformas externas.
Estas características están ahora en Vista Previa Pública y continuaremos agregando más sinks de Databricks Runtime a DLT con el tiempo, eventualmente soportándolos todos. El próximo en el que estamos trabajando es foreachBatch, que permite a los clientes escribir en sinks de datos arbitrarios y realizar combinaciones personalizadas en tablas Delta.
La API de Sink está disponible en el paquete Python dlt y se puede usar con create_sink() como se muestra a continuación:
La API acepta tres argumentos clave para definir el sink:
path o escribir directamente en una tabla en Unity Catalog usando el atributo tableName.La API @append_flow ha sido mejorada para permitir escribir datos en sinks de destino identificados por sus nombres de sink. Tradicionalmente, esta API permitía a los usuarios cargar datos sin problemas desde múltiples fuentes a una única tabla de streaming. Con la nueva mejora, los usuarios ahora también pueden añadir datos a sinks específicos. A continuación, se muestra un ejemplo de cómo configurar esto:
Construyamos ahora un pipeline de DLT que procese datos de clickstream, empaquetados dentro de los conjuntos de datos de Databricks. Este pipeline analizará los datos para identificar eventos que enlazan a una página de Apache Spark y posteriormente escribirá estos datos tanto a Event Hubs como a sinks de Delta. Estructuraremos el pipeline utilizando la Arquitectura Medallion, que organiza los datos en diferentes capas para mejorar la calidad y la eficiencia del procesamiento.
Comenzamos cargando datos JSON crudos en la capa Bronze usando Auto Loader. Luego, limpiamos los datos y aplicamos estándares de calidad en la capa Silver para asegurar su integridad. Finalmente, en la capa Gold, filtramos las entradas con un título de página actual de Apache_Spark y las almacenamos en una tabla llamada spark_referrers, que servirá como fuente para nuestros sinks. Por favor, consulta el Apéndice para el código completo.
En esta sección, utilizaremos la API create_sink para establecer un sink de Event Hubs. Esto asume que tienes un stream de Kafka o Event Hubs operativo. Nuestro pipeline transmitirá datos a Event Hubs habilitados para Kafka utilizando una política de acceso compartido, con la cadena de conexión almacenada de forma segura en Secretos de Databricks. Alternativamente, puedes usar un principal de servicio para la integración en lugar de una política SAS. Asegúrate de actualizar las propiedades de conexión y los secretos correspondientemente. Aquí tienes el código para configurar el sink de Event Hubs:
Además del sink de Event Hubs, podemos utilizar la API create_sink para configurar un sink Delta. Este sink escribe datos en una ubicación especificada en el Databricks File System (DBFS), pero también puede configurarse para escribir en una ubicación de almacenamiento de objetos como Amazon S3 o ADLS.
A continuación, se muestra un ejemplo de cómo configurar un sink Delta:
Con los sinks de Event Hubs y Delta establecidos, el siguiente paso es poblar estos sinks utilizando el decorador append_flow. Este proceso implica transmitir datos a los sinks, asegurando que se actualicen continuamente con la información más reciente.
Para el sink de Event Hubs, el parámetro value es obligatorio, mientras que parámetros adicionales como key, partition, headers y topic se pueden especificar opcionalmente. A continuación, se muestran ejemplos de cómo configurar flujos para los sinks de Kafka y Delta:
La función applyInPandasWithState también es compatible ahora en DLT, lo que permite a los usuarios aprovechar el poder de Pandas para el procesamiento con estado dentro de sus pipelines de DLT. Esta mejora permite transformaciones y agregaciones de datos más complejas utilizando la familiar API de Pandas. Con la API de DLT Sink, los usuarios pueden transmitir fácilmente estos datos procesados con estado a temas de Kafka. Esta integración es particularmente útil para análisis en tiempo real y arquitecturas basadas en eventos, asegurando que los pipelines de datos puedan manejar y distribuir eficientemente datos de streaming a sistemas externos.
El enfoque demostrado anteriormente muestra cómo construir un pipeline de DLT que transforma datos de manera eficiente mientras utiliza la nueva API de Sink para entregar sin problemas los resultados a tablas Delta externas y Event Hubs habilitados para Kafka.
Esta característica es particularmente valiosa para pipelines de análisis en tiempo real, permitiendo que los datos se transmitan a flujos de Kafka para aplicaciones como detección de anomalías, mantenimiento predictivo y otros casos de uso sensibles al tiempo. También habilita arquitecturas basadas en eventos, donde los procesos posteriores pueden activarse instantáneamente al transmitir eventos a temas de Kafka, permitiendo un procesamiento rápido de los datos recién llegados.
¡La función DLT Sinks ya está disponible en vista previa pública para todos los clientes de Databricks! Esta nueva y potente capacidad te permite extender sin problemas tus pipelines de DLT a sistemas externos como Kafka y tablas Delta, asegurando el flujo de datos en tiempo real y la simplificación de las integraciones. Para obtener más información, consulta los siguientes recursos:
Código de la canalización:
(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
