Detección automática de esquemas CSV para una ingestión ultrarrápida en ClickHouse con Parquet
Como ingeniero de datos repito constantemente una misma tarea: ingerir datos desde ficheros CSV. El problema no es solo cargar los datos, sino la ceremonia que la rodea. Cada vez que aparece una nueva fuente tengo que inspeccionar columnas, definir un esquema y escribir un script de carga. Y si el CSV tiene 100 columnas o tipos ambiguos la tarea se vuelve tediosa y proclive a errores. Buscaba una forma más rápida y fiable.
El objetivo fue crear un script en Node.js capaz de leer cualquier CSV sin conocer su estructura previa, detectar automáticamente el esquema incluyendo nombres de columnas y tipos, convertir el CSV a Parquet formato columnar eficiente, y dejar los datos listos para ingestarse en ClickHouse que funciona muy bien con Parquet.
Por qué Parquet y ClickHouse ClickHouse es una base de datos columnar de alto rendimiento diseñada para analítica OLAP. Apache Parquet es un formato de almacenamiento columnar que permite leer solo las columnas necesarias en cada consulta reduciendo I O y acelerando la ejecución. La combinación ofrece almacenamiento eficiente y analítica ultrarrápida.
Concepto general El flujo se divide en tres pasos: detección de esquema, transformación de datos y conversión a Parquet. Primero se analizan los encabezados y unas filas de muestra para inferir tipos como entero, número con coma flotante, booleano, fecha o cadena. Después se transforman las cadenas crudas del CSV a esos tipos detectados. Finalmente se escribe un fichero .parquet con el esquema y los datos transformados.
Herramientas En Node.js se pueden usar librerías maduras para cada parte, por ejemplo papaparse para parseo robusto de CSV y parquetjs para escribir archivos Parquet. El enfoque evita escribir manualmente un esquema por cada fuente y simplifica pipelines ETL repetitivos.
Detección de esquema La detección automática se basa en analizar los valores de muestra por columna y aplicar reglas sencillas: si todos los valores coinciden con true o false se marca booleano, si parsean a número se elige double o integer según contexto, si parsean como fecha se registra como fecha o como cadena si se prefiere tratar fechas como UTF8, y en caso contrario se asigna cadena. Este primer paso permite crear dinámicamente un ParquetSchema usable por parquetjs.
Transformación y conversión Con el esquema detectado se recorre todo el CSV, se castea cada valor al tipo inferido y se van escribiendo filas en el escritor Parquet. El resultado es un archivo columnar compacto y listo para ingestarse en ClickHouse. Este proceso reduce considerablemente el I O y acelera operaciones analíticas posteriores.
Ingesta en ClickHouse Crear una tabla con tipos coincidentes permite una ingesta directa desde Parquet. Por ejemplo una tabla simple podría definirse con columnas id Float64, first_name String, is_active Boolean, created_at String, balance Float64 y usar ENGINE MergeTree ORDER BY id. A continuación se puede importar el archivo Parquet con clickhouse client usando INSERT INTO tabla FORMAT Parquet redirigiendo el fichero. ClickHouse detecta el esquema del Parquet y carga los datos de forma eficiente.
Beneficios para empresas Automatizar la detección de esquema y convertir CSV a Parquet ahorra tiempo, reduce errores humanos y habilita cargas masivas rápidas en plataformas analíticas. Para organizaciones que requieren soluciones a medida este enfoque encaja con proyectos de aplicaciones a medida y software a medida, integrando capacidades de inteligencia de negocio y analítica con herramientas como power bi.
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial, ciberseguridad y servicios cloud aws y azure. Diseñamos pipelines y soluciones ETL que combinan buenas prácticas de data engineering con servicios de software a medida y soluciones de inteligencia artificial para empresas. Nuestra experiencia incluye servicios de ciberseguridad, pentesting, implementación de agentes IA, soluciones ia para empresas y despliegue en entornos cloud como aws y azure, además de integraciones con plataformas de inteligencia de negocio y power bi.
Extensiones y producción Este proof of concept se puede ampliar con detección de tipos más robusta, manejo de valores nulos, normalización de fechas, validación de calidad de datos, particionado de Parquet para escalado y orquestación para incorporar a pipelines existentes. También es recomendable implementar logging, retries y pruebas de integridad al cargar en ClickHouse para ambientes de producción.
Si buscas acelerar tus procesos de ingestión masiva, modernizar tu arquitectura de datos o desarrollar una solución a medida que incluya inteligencia artificial, agentes IA, servicios de inteligencia de negocio o asegurar tus sistemas con ciberseguridad profesional, en Q2BSTUDIO podemos ayudarte a diseñar e implementar la solución óptima. Contacta con nuestro equipo para una evaluación y prueba de concepto personalizada.
Comentarios