Introducción

¿Te has preguntado alguna vez cómo manejar de forma fácil y segura esos enormes volúmenes de datos que crecen día a día? Pues aquí llega Delta Lake en Microsoft Fabric para hacerte la vida mucho más sencilla.

Con Delta Lake, tenemos lo mejor de dos mundos: por un lado, la flexibilidad de un lago de datos; por otro, la precisión y potencia de una base de datos relacional. ¿Qué significa esto? Que ahora puedes trabajar con datos por lotes y en tiempo real, mantener un historial de versiones (¡sí, viaje en el tiempo!) y manejar tus datos como en un sistema relacional, todo en un entorno distribuido de alto rendimiento.

En este post, vamos a sumergirnos en cómo Delta Lake aprovecha el poder de Spark en Microsoft Fabric, y te mostraré cómo puedes aplicar transacciones ACID, trabajar con DataFrames, y hasta gestionar datos de streaming en tiempo real.

 


 


Características Principales de Delta Lake

  1. Tablas Relacionales con Operaciones CRUD: Las tablas Delta permiten las mismas operaciones de datos que una base de datos relacional, facilitando el uso de consultas, inserciones, actualizaciones y eliminaciones.

  2. Transacciones ACID: Delta Lake garantiza la atomicidad, coherencia, aislamiento y durabilidad, clave para gestionar operaciones de datos simultáneas y asegurar la integridad de los datos.

  3. Control de Versiones y Viaje en el Tiempo: Cada transacción queda registrada, lo que permite visualizar versiones anteriores de los datos y realizar auditorías de cambios.

  4. Compatibilidad con Datos por Lotes y Streaming: Delta Lake permite almacenar y procesar tanto datos estáticos como de streaming, lo cual es ideal para flujos de datos en tiempo real.

  5. Formato Estándar: El uso de Parquet facilita la interoperabilidad y permite que las tablas Delta se consulten mediante SQL en Microsoft Fabric.


Creación y Administración de Tablas Delta

Al crear una tabla en un almacén de lago, Microsoft Fabric define una tabla Delta en el metastore, almacenando los datos como archivos Parquet. Existen dos tipos de tablas en Delta Lake:

  • Tablas Administradas: Fabric gestiona tanto la definición de la tabla como los archivos de datos. Al eliminar una tabla, también se eliminan los archivos subyacentes.
  • Tablas Externas: La definición de tabla se mantiene en el metastore, pero los datos residen en una ubicación externa. Al eliminar la tabla, los datos se mantienen en la ubicación de almacenamiento original.

Creación de Tablas Delta con DataFrames

En Spark, los DataFrames pueden guardarse en formato Delta, creando automáticamente una tabla. Por ejemplo, al cargar un archivo en un DataFrame y guardarlo como una tabla Delta, Spark crea una carpeta para almacenar archivos Parquet y un registro de transacciones en _delta_log. Esto permite:

  • Tablas Externas: Usar una ubicación personalizada para los datos.
  • Metadatos y Definiciones de Esquema: Crear una definición de tabla en el metastore con DeltaTableBuilder o Spark SQL sin cargar datos.

Guardado de Datos en Formato Delta sin Tabla

Es posible almacenar datos en formato Delta sin crear una definición de tabla en el metastore. Este método conserva el resultado de transformaciones sin registros adicionales, permitiendo guardar los datos en una ubicación de almacenamiento sin crear un esquema de tabla.


Trabajar con Tablas Delta en Spark

Uso de Spark SQL

La API de Spark SQL permite insertar consultas SQL dentro de otros lenguajes (Python, Scala) y ejecutar instrucciones SQL directamente sobre tablas Delta. Esto es útil para la manipulación y consulta de datos.

Uso de Delta Lake API

Delta Lake API permite trabajar directamente con archivos Delta para leer, modificar y gestionar versiones de datos sin usar el metastore.


Viaje en el Tiempo y Control de Versiones

La capacidad de viaje en el tiempo permite consultar versiones anteriores de la tabla usando:

  1. Comando SQL: DESCRIBE para ver el historial de transacciones.
  2. Versiones Específicas: versionAsOf para recuperar una versión anterior o timestampAsOf para una fecha específica.

Esta función es útil para auditorías y recuperación de datos antiguos.


Uso de Datos de Streaming en Delta Lake

Además de datos estáticos, Delta Lake soporta streaming en Spark Structured Streaming, permitiendo leer y escribir datos en tiempo real. Este tipo de procesamiento es clave para escenarios donde los datos se generan continuamente, como IoT.

Spark Structured Streaming

La API de Structured Streaming permite que los datos fluyan continuamente desde fuentes como puertos de red, Azure Event Hubs o Kafka hacia una tabla Delta, lo cual permite análisis y visualización casi en tiempo real.

Streaming con Tablas Delta

  • Delta como Origen: Tablas Delta pueden leerse continuamente, permitiendo la creación de informes en tiempo real.
  • Delta como Receptor: Los datos de streaming pueden guardarse directamente en tablas Delta, lo que facilita el análisis en tiempo real.

Ejemplo de Transformación en Streaming

En Spark, los datos de streaming pueden transformarse en DataFrames para aplicar filtros y agregar columnas, procesando los datos antes de almacenarlos en una tabla Delta.


Conclusión

Delta Lake en Microsoft Fabric es una tecnología versátil para manejar datos a gran escala con la flexibilidad del almacenamiento en un lago y las ventajas de un sistema relacional. Ofrece funciones avanzadas de administración de transacciones, versiones, y compatibilidad con datos en tiempo real, lo que lo convierte en una herramienta potente para arquitecturas modernas de análisis de datos.