Delta Lake

Delta Lake es una capa de almacenamiento de código abierto diseñada para ejecutarse sobre un Data Lake existente y mejorar su confiabilidad, seguridad y rendimiento.

Admite transacciones ACID, metadatos escalables, transmisión unificada y procesamiento de datos por lotes.

Pudiendo uitlizar Apache Spark DataFrames o SQL, es posible obtener todos los beneficios de Delta Lake simplemente guardando sus datos en Lakehouse con la configuración predeterminada.

 


¿Cuáles son las características y beneficios de Delta Lake?

Formato abierto: Delta Lake utiliza el formato Apache Parquet de código abierto y es totalmente compatible con el motor de análisis unificado Apache Spark para operaciones potentes y flexibles.

Transacciones ACID: Delta Lake permite transacciones ACID (atomicidad, consistencia, aislamiento, durabilidad) para cargas de trabajo de Big Data. Captura todos los cambios realizados en los datos en un registro de transacciones serializado, protegiendo la integridad y confiabilidad de los datos y proporcionando pistas de auditoría completas y precisas.

Viaje en el tiempo: el registro de transacciones de Delta Lake proporciona un registro maestro de cada cambio realizado en los datos, lo que hace posible recrear el estado exacto de un conjunto de datos en cualquier momento. El control de versiones de datos hace que los análisis de datos y los experimentos sean completamente reproducibles.

Cumplimiento de esquemas: Delta Lake protege la calidad y la consistencia de sus datos con un cumplimiento de esquemas sólido, lo que garantiza que los tipos de datos sean correctos y completos y evita que los datos incorrectos corrompan los procesos críticos.

Fusionar, actualizar, eliminar: Delta Lake admite operaciones de lenguaje de manipulación de datos (DML), incluidos los comandos de fusión, actualización y eliminación para el cumplimiento y casos de uso complejos, como transmisiones upserts, cambio de captura de datos, operaciones de cambio de dimensión lento (SCD) y más.

Apache Spark y Delta Lake juntos
Apache Spark y Delta Lake juntos

Mejores prácticas: Delta Lake

Entre algunas de las mejores formas de aprovechar todo lo que ofrece Delta Lake están:

  1. Proporcionar sugerencias de ubicación de datos: Si espera que una columna se use comúnmente en los predicados de consulta y si esa columna tiene una alta cardinalidad (es decir, una gran cantidad de valores distintos). Puede usar Delta Lake para presentar automáticamente los datos en los archivos en función de los valores de las columnas y utilizar la información de diseño para omitir datos irrelevantes durante la consulta Z-ORDER BY.
  2. Archivos compactos: Si escribe datos continuamente en una tabla Delta, con el tiempo acumulará una gran cantidad de archivos, especialmente si agrega datos en lotes pequeños. Esto puede tener un efecto adverso en la eficiencia de las lecturas de tablas y también puede afectar el rendimiento de su sistema de archivos. Idealmente, una gran cantidad de archivos pequeños debe reescribirse en una cantidad menor de archivos más grandes de forma regular. Esto se conoce como compactación, puede compactar una tabla usando el comando OPTIMIZE.
  3. Databricks no recomienda usar el almacenamiento en caché de Spark por los siguientes motivos: 
    • Pierde cualquier salto de datos que pueda provenir de filtros adicionales agregados en la parte superior del archivo almacenado en caché DataFrame. 
    • Es posible que los datos que se almacenan en caché no se actualicen si se accede a la tabla con un identificador diferente (por ejemplo, lo hace spark.table(x).cache() pero luego escribe en la tabla con spark.write.save(/some/path).
  4. Habilitar escrituras optimizadas: para tablas particionadas, merge puede producir una cantidad mucho mayor de archivos pequeños que la cantidad de particiones aleatorias. Esto se debe a que cada tarea aleatoria puede escribir varios archivos en varias particiones y puede convertirse en un cuello de botella en el rendimiento. Puede reducir la cantidad de archivos habilitando escritura optimizada. 

Las transacciones ACID con Delta Lake proporcionan muchas opciones para actualizar datos y metadatos. Databricks recomienda evitar interactuar directamente con los archivos de registro de transacciones y datos en directorios de archivos de Delta Lake para evitar daños en las tablas.

Diferencias entre Delta Lake y Parquet en Apache Spark

Delta Lake maneja las siguientes operaciones automáticamente, se recomienda evitar realizar estas operaciones manualmente:

  • REFRESH TABLE: Las tablas delta siempre devuelven la información más actualizada, por lo que no es necesario llamar manualmente después de los cambios.REFRESH TABLE.
  • Agregar y eliminar particiones: Delta Lake rastrea automáticamente el conjunto de particiones presentes en una tabla y actualiza la lista a medida que se agregan o eliminan datos. Como resultado, no hay necesidad de ejecutar o .ALTER TABLE [ADD|DROP] PARTITIONMSCK.
  • Cargue una sola partición: no es necesario leer las particiones directamente. Por ejemplo, no necesita ejecutar spark.read.format(“parquet”).load(“/data/date=2017-01-01”). En su lugar, utilice una cláusula WHERE para la omisión de datos, como .spark.read.table(“<table_name>”).where(“date = ‘2017-01-01′”).
  • No modifique manualmente los archivos de datos: Delta Lake utiliza el registro de transacciones para realizar cambios en la tabla de forma atómica. No modifique, agregue ni elimine directamente archivos de datos de Parquet en una tabla Delta, ya que esto puede provocar la pérdida de datos o la corrupción de la tabla.

 

Conclusiónes

  1. Delta Lake es el formato de almacenamiento predeterminado para todas las operaciones en Azure Databricks, y a menos que se especifique lo contrario, todas las tablas Databricks son tablas Delta.
  2. Azure Databricks amplía las funcionalidades nativas con la implementación simplificada de la infraestructura, el escalado mejorado y las dependencias de datos administrados.
  3. Con cada escritura en una tabla Delta se crea una nueva versión de la tabla, puede usar el registro de transacciones para revisar las modificaciones de la tabla y consultar las versiones anteriores.
  4. Delta Lake valida el esquema al escribir, lo que garantiza que todos los datos escritos en una tabla coincidan con los requisitos que ha establecido.
  5. Delta Lake usa una combinación de análisis de metadatos y diseño de datos físicos para reducir el número de archivos examinados para satisfacer cualquier consulta.

Delta Lake ofrece carácteristicas intereseantes a considerar, siendo un formato que es cada vez más adoptado y no solo para estrategias de reducción de costos (almacenamiento y procesamiento). Considere Delta Lake a la hora de rendimiento, manejo de historicos y la integridad de sus datos, pues puede llegar a ser la opción adecuada, dependiendo el requerimiento.

Otros temas de interés:

 

Visto: 667 veces

Deja un comentario