Saltar al contenido principal
Apache Beam es un modelo de programación unificado y de código abierto que permite a los desarrolladores definir y ejecutar pipelines de procesamiento de datos tanto por lotes como en flujo (continuo). La flexibilidad de Apache Beam radica en su capacidad para admitir una amplia variedad de escenarios de procesamiento de datos, desde operaciones ETL (Extract, Transform, Load) hasta el procesamiento complejo de eventos y la analítica en tiempo real. Esta integración utiliza el conector JDBC oficial de ClickHouse como capa subyacente de inserción.

Paquete de integración

El paquete de integración necesario para integrar Apache Beam y ClickHouse se mantiene y desarrolla en Apache Beam I/O Connectors, un conjunto de integraciones para muchos sistemas populares de almacenamiento de datos y bases de datos. La implementación de org.apache.beam.sdk.io.clickhouse.ClickHouseIO se encuentra en el repositorio de Apache Beam.

Configuración del paquete Apache Beam para ClickHouse

Instalación del paquete

Agregue la siguiente dependencia a su sistema de gestión de paquetes:
Versión recomendada de BeamSe recomienda usar el conector ClickHouseIO a partir de la versión 2.59.0 de Apache Beam. Es posible que las versiones anteriores no admitan por completo la funcionalidad del conector.
Los artefactos están disponibles en el repositorio oficial de Maven.

Ejemplo de código

El siguiente ejemplo lee un archivo CSV llamado input.csv como una PCollection, lo convierte en un objeto de tipo Row (usando el esquema definido) y lo inserta en una instancia local de ClickHouse mediante ClickHouseIO:

Tipos de datos compatibles

Parámetros de ClickHouseIO.Write

Puede ajustar la configuración de ClickHouseIO.Write con las siguientes funciones setter:

Limitaciones

Tenga en cuenta las siguientes limitaciones al usar el conector:
  • A día de hoy, solo se admite la operación Sink. El conector no admite la operación Source.
  • ClickHouse realiza la deduplicación al insertar en una tabla ReplicatedMergeTree o en una tabla Distributed construida sobre ReplicatedMergeTree. Sin replicación, insertar en una MergeTree normal puede dar lugar a duplicados si una inserción falla y luego se reintenta correctamente. Sin embargo, cada bloque se inserta de forma atómica, y el tamaño del bloque se puede configurar mediante ClickHouseIO.Write.withMaxInsertBlockSize(long). La deduplicación se logra mediante el uso de sumas de verificación de los bloques insertados. Para obtener más información sobre la deduplicación, visite Deduplication y Configuración de inserción con deduplicación.
  • El conector no ejecuta ninguna sentencia DDL; por lo tanto, la tabla de destino debe existir antes de la inserción.
Última modificación el 19 de junio de 2026