Este conector solo debe usarse si los datos son simples y constan de tipos de datos primitivos, p. ej., int. Los tipos específicos de ClickHouse, como Map, no son compatibles.
Licencia
Pasos
Reúne los datos de conexión
Los detalles de su servicio de ClickHouse Cloud están disponibles en la consola de ClickHouse Cloud.
Seleccione un servicio y haga clic en Connect:

curl de ejemplo.

1
Instalar Kafka Connect y el conector
Asumimos que has descargado el paquete de Confluent y lo has instalado localmente. Sigue las instrucciones de instalación para instalar el conector, tal como se documenta aquí.Si usas el método de instalación
confluent-hub, tus archivos de configuración locales se actualizarán.Para enviar datos a ClickHouse desde Kafka, usamos el componente sink del conector.2
Descarga e instala el driver JDBC
Descarga e instala el ClickHouse JDBC driver
clickhouse-jdbc-<version>-shaded.jar desde aquí. Instálalo en Kafka Connect siguiendo las instrucciones aquí. Es posible que otros drivers funcionen, pero no se han probado.Problema común: la documentación sugiere copiar el archivo jar a
share/java/kafka-connect-jdbc/. Si tienes problemas para que Connect encuentre el driver, copia el driver a share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib/. O modifica plugin.path para incluir el driver; consulta más abajo.3
Preparar la configuración
Sigue estas instrucciones para configurar una instancia de Connect adecuada para tu tipo de instalación, teniendo en cuenta las diferencias entre un clúster
standalone y uno distribuido. Si usas Confluent Cloud, la configuración distribuida es la que corresponde.Los siguientes parámetros son relevantes para usar el conector JDBC con ClickHouse. Puedes encontrar una lista completa de parámetros aquí:_connection.url_- debe tener la formajdbc:clickhouse://<clickhouse host>:<clickhouse http port>/<target database>connection.user- un usuario con acceso de escritura a la base de datos de destinotable.name.format- tabla de ClickHouse en la que insertar datos. Debe existir.batch.size- El número de filas que se enviarán en un solo batch. Asegúrate de establecerlo en un valor suficientemente alto. Según las recomendaciones de ClickHouse, 1000 debe considerarse el valor mínimo.tasks.max- El conector JDBC Sink admite ejecutar una o más tasks. Esto puede usarse para aumentar el rendimiento. Junto con el tamaño del batch, es tu principal mecanismo para mejorar el rendimiento.value.converter.schemas.enable- Establécelo en false si usas un registro de esquemas y en true si incrustas los esquemas en los mensajes.value.converter- Establécelo según tu tipo de dato; por ejemplo, para JSON,io.confluent.connect.json.JsonSchemaConverter.key.converter- Establécelo enorg.apache.kafka.connect.storage.StringConverter. Utilizamos claves String.pk.mode- No es relevante para ClickHouse. Establécelo en none.auto.create- No es compatible y debe ser false.auto.evolve- Recomendamos false para esta configuración, aunque podría ser compatible en el futuro.insert.mode- Establécelo en “insert”. Actualmente no se admiten otros modos.key.converter- Establécelo según los tipos de tus claves.value.converter- Establécelo según el tipo de datos de tu topic. Estos datos deben tener un esquema compatible: formatos JSON, Avro o Protobuf.
value.converter.schemas.enable- Establécelo en false, ya que utilizamos un registro de esquemas. Establécelo en true si incrustas el esquema en cada mensaje.key.converter- Establécelo en “org.apache.kafka.connect.storage.StringConverter”. Utilizamos claves String.value.converter- Establécelo en “io.confluent.connect.json.JsonSchemaConverter”.value.converter.schema.registry.url- Establece la URL del servidor de esquemas junto con las credenciales del servidor de esquemas mediante el parámetrovalue.converter.schema.registry.basic.auth.user.info.
4
Crear la tabla de ClickHouse
Asegúrate de que la tabla se haya creado, eliminándola si ya existe de ejemplos anteriores. A continuación se muestra un ejemplo compatible con el conjunto de datos reducido de Github. Observa la ausencia de tipos Array o Map, que actualmente no son compatibles:
5
Iniciar Kafka Connect
Inicia Kafka Connect en modo standalone o distribuido.
6
Añadir datos a Kafka
Inserta mensajes en Kafka con el script y la configuración proporcionados. Tendrás que modificar Este script puede usarse para insertar cualquier archivo ndjson en un topic de Kafka. Intentará inferir automáticamente un esquema. La configuración de ejemplo proporcionada solo insertará 10k mensajes; modifícala aquí si es necesario. Esta configuración también elimina del conjunto de datos, durante la inserción en Kafka, cualquier campo Array incompatible.Esto es necesario para que el conector JDBC convierta los mensajes en sentencias INSERT. Si usas tus propios datos, asegúrate de insertar un esquema con cada mensaje (estableciendo _value.converter.schemas.enable _en true) o de que tu client publique mensajes que hagan referencia a un esquema en el registro de esquemas.Kafka Connect debería comenzar a consumir mensajes e insertar filas en ClickHouse. Ten en cuenta que las advertencias sobre “[JDBC Compliant Mode] Transaction isn’t supported.” son esperables y pueden ignorarse.Una consulta sencilla a la tabla de destino “Github” debería confirmar la inserción de datos.
github.config para incluir tus credenciales de Kafka. El script está configurado actualmente para usarse con Confluent Cloud.Lecturas adicionales recomendadas
- Parámetros de configuración de Kafka Sink
- Análisis en profundidad de Kafka Connect – conector JDBC Source
- Análisis en profundidad de Kafka Connect JDBC Sink: trabajo con claves primarias
- Kafka Connect en acción: JDBC Sink - para quienes prefieren verlo en lugar de leer.
- Análisis en profundidad de Kafka Connect – explicación de convertidores y serialización