Spark: Ingesta (Raw to Bronze) y Formatos Columnares
Autor: Eduardo Martínez Agrelo
En el mundo real, los datos llegan en formatos caóticos. En nuestro proyecto "Streamify", hemos generado 10 millones de reproducciones en formato JSON. Aunque el JSON es fácil de leer para los humanos, es un enemigo del rendimiento en analítica de Big Data. En este laboratorio, realizaremos la primera transformación de nuestra Arquitectura Medallón: pasar de Raw (Crudo) a la capa Bronce.
¿Por qué JSON es un problema para la analítica?
El JSON es un formato basado en filas y texto plano. Esto significa que si quieres sumar las duraciones de las canciones, Spark debe leer el documento entero, descartando la mayor parte de la información. La solución es cambiar a un formato columnar.
- Parquet: Es el estándar de la industria. Al ser columnar y fuertemente comprimido, Spark solo lee las columnas que realmente necesita para una consulta.
- Eficiencia de almacenamiento: Al pasar de JSON a Parquet, podemos reducir el tamaño de nuestros datos hasta en un 85%, lo que se traduce directamente en ahorro de dinero en almacenamiento y tiempo de lectura.
Esquemas estrictos vs. Inferencia automática
Un error común de los principiantes es dejar que Spark "adivine" el tipo de dato de cada columna usando inferSchema. En producción, esto es un error grave:
- Costo computacional: Para inferir el esquema, Spark debe leer el dataset completo dos veces: una para adivinar y otra para procesar. Con 10 millones de filas, esto es ineficiente.
- Seguridad: Al definir nuestro esquema manualmente usando
StructTypeen Scala, garantizamos que nuestros datos sigan un contrato estricto desde el inicio del pipeline.
Implementación práctica
En este laboratorio, programaremos nuestro primer Job en Scala. Transformaremos los archivos JSON crudos que tenemos en nuestro bucket de Google Cloud Storage a archivos Parquet particionados. Verás la diferencia de rendimiento al consultar los datos procesados en la capa Bronce frente a los datos crudos originales.
Conclusión: Ingeniería de almacenamiento
Al finalizar este laboratorio, habrás entendido la importancia crítica del formato de archivo y el esquema en Big Data. Has reducido el tamaño de tu Data Lake y has preparado el terreno para comenzar con las transformaciones y limpiezas en la capa Plata (Silver).