La elección entre Parquet y CSV depende de quién escribe el archivo, quién lo consume y qué necesita leer. Un fichero para intercambiar datos con una aplicación sencilla plantea requisitos distintos de una tabla consultada repetidamente por un motor analítico. Cambiar la extensión sin revisar ese recorrido puede desplazar el problema hacia conversiones, tipos incorrectos o herramientas incompatibles.
Una comparación útil comprueba dos cosas: que ambos formatos representan los mismos datos y cómo se comportan en las operaciones reales del consumidor. El tamaño del archivo es solo una de las medidas.
Qué aporta cada formato
Apache Parquet es un formato orientado a columnas, con representación de tipos y mecanismos de codificación y compresión. Esa organización permite a los lectores compatibles trabajar sobre las columnas necesarias para una consulta. El beneficio efectivo depende del motor, de cómo se hayan escrito los archivos y de la consulta.
CSV representa registros mediante campos de texto separados por delimitadores. El RFC 4180 documenta una convención común, incluidos campos entre comillas y escape de comillas internas, pero tiene carácter informativo y reconoce diferencias entre implementaciones. Conviene acordar el dialecto de intercambio en vez de suponer que todos los programas interpretan el mismo archivo igual.
| Necesidad | CSV | Parquet |
|---|---|---|
| Inspección rápida con herramientas de texto | Sencilla, aunque los campos pueden contener saltos de línea | Requiere un lector que entienda el formato |
| Tipos de los campos | Necesita un contrato externo o reglas de lectura | Incluye información de esquema; hay que validar su interpretación |
| Consultas de pocas columnas sobre tablas anchas | El lector suele tener que recorrer texto que no termina utilizando | Puede aprovechar su organización por columnas |
| Intercambio con una aplicación limitada | Útil si esa aplicación tiene importación CSV compatible | Depende de que exista soporte de lectura |
| Edición manual | Posible, con riesgo de alterar delimitadores y valores | No está pensado para editarse como texto |
Ningún formato resuelve por sí mismo permisos, calidad del dato o cambios semánticos. Un archivo válido puede contener importes en una unidad equivocada o identificadores que ya perdieron información antes de escribirse.
Antes de medir velocidad, fijar el significado
Prepara un conjunto pequeño que incluya los valores que suelen romper una conversión. Por ejemplo, códigos con ceros iniciales, decimales, texto con comas y comillas, campos vacíos, valores nulos y marcas temporales con su interpretación acordada. Este conjunto es una prueba funcional, no un benchmark representativo del volumen.
Un identificador 00127 debe seguir identificando la misma entidad después de escribir y leer. Si el lector CSV lo infiere como número, recuperar 127 puede ser un error aunque la suma de importes siga coincidiendo. Define esa columna como texto en el contrato y configura el lector en consecuencia.
Distingue también texto vacío y ausencia de valor. Un campo sin contenido no tiene una interpretación universal de nulo en todos los lectores CSV. Establece cómo se exporta cada caso y qué opciones necesita la importación. En Parquet, comprueba la correspondencia entre el esquema escrito y los tipos del motor de destino, especialmente para decimales y tiempos.
No cuentes filas contando líneas del archivo CSV: un campo correctamente entrecomillado puede contener saltos de línea. Cuenta registros con el parser que se vaya a utilizar y conserva los rechazos como evidencia.
Diseñar una comparación reproducible
La siguiente propuesta describe una prueba que debe ejecutarse en el entorno del proyecto. No presenta tiempos ni ahorros medidos.
- Selecciona una misma instantánea de datos y registra filas, columnas, tipos y distribución relevante. Mantén el mismo alcance en ambos formatos.
- Escribe los archivos anotando versión del escritor, compresión, tamaño y organización de los ficheros. Incluye el tiempo de conversión si forma parte del proceso habitual.
- Define las consultas antes de medir: lectura completa, selección de pocas columnas y una agregación representativa con filtros.
- Ejecuta con el mismo motor, recursos y ubicación de almacenamiento. Separa las pruebas con caché preparada de las que necesitan leer los datos de nuevo.
- Registra tiempo total, datos leídos cuando el motor lo exponga, uso de recursos, errores y resultado de cada consulta.
- Repite las ejecuciones y conserva la variación, además de una medida central. Anota cualquier cambio de configuración.
Comparar un CSV remoto sin comprimir con un Parquet local en caché no aísla el efecto del formato. Puede describir dos escenarios reales, pero debe presentarse como una comparación de escenarios completos. Si lo que quieres evaluar es el formato, controla esas diferencias.
Revisar el resultado, no solo el cronómetro
Valida el recuento de registros, las claves, los nulos y las agregaciones relevantes después de la lectura. Añade comparaciones a nivel de fila o por partición cuando corresponda. Dos totales iguales no descartan que haya filas sustituidas o duplicadas.
Observa también la operación cotidiana. Un flujo que produce muchos ficheros diminutos puede dedicar recursos a abrirlos y gestionarlos. Una herramienta que solo acepta CSV necesitará una exportación adicional si almacenas internamente en Parquet. Esos pasos deben entrar en el cálculo operativo.
Documenta qué sucede cuando llega una columna nueva o cambia un tipo. El formato elegido debe integrarse con el procedimiento de evolución de esquemas, no convertirse en una vía para aceptar silenciosamente cualquier estructura.
Una decisión que puede combinar ambos
Es razonable conservar Parquet para determinadas cargas analíticas y generar CSV para consumidores que lo necesitan. La condición es mantener una conversión definida, comprobable y con una fuente autorizada, evitando que varias exportaciones se conviertan en versiones independientes del dato.
Si el problema principal es entregar resultados voluminosos a usuarios, revisa además el contrato de exportaciones grandes de datos. La caducidad, la autorización y el estado de la exportación no dependen únicamente del formato.
Para evaluar esta decisión en una plataforma de Big Data, el punto de partida es una muestra con casos límite y las consultas que representan el trabajo real. Puedes compartir el contexto técnico del proceso para delimitar una prueba comparable.