⚡ Optimizando Delta Tables con OPTIMIZE y ZORDER
- 17 jun
- 1 min de lectura
Después de explorar Time Travel y Restore Table, decidí revisar uno de los mecanismos más importantes para mejorar el rendimiento de una Delta Table: OPTIMIZE. Y, a medida que una tabla recibe operaciones como INSERT, UPDATE, DELETE, MERGE o procesos de Streaming, es común que se generen múltiples archivos pequeños (small files).
Aunque Spark es un motor distribuido, leer miles de archivos pequeños puede generar un costo adicional asociado a la gestión y coordinación de esas lecturas. Para solucionar este problema, Delta Lake proporciona:
OPTIMIZE catalog.schema.table;
✅ Compactación de archivos Parquet.
✅ Mejor rendimiento de lectura.
✅ Nueva versión registrada en el historial de la tabla.
✅ Archivos anteriores marcados como obsoletos.
🎯 OPTIMIZE + ZORDER
En escenarios donde además queremos mejorar el acceso a los datos filtrados por determinadas columnas, podemos utilizar:
OPTIMIZE catalog.schema.table ZORDER BY (columnas);
Además de compactar archivos, Delta Lake reorganiza físicamente los datos para mejorar la eficiencia de consultas analíticas frecuentes. De esta manera, nos brinda:
✅ Menor cantidad de archivos escaneados.
✅ Menor volumen de datos leídos.
✅ Mejor aprovechamiento del Data Skipping.
📌 En este notebook exploro ambos enfoques y analizo cuándo realmente tiene sentido ejecutar OPTIMIZE sobre una Delta Table. La explicación completa y el notebook utilizado se encuentran disponibles en mi repositorio de GitHub.
🔜 En la siguiente publicación continuaré explorando Delta Lake mediante la operación VACUUM y su papel dentro del ciclo de vida de los archivos almacenados.


Comentarios