Ce connecteur ne doit être utilisé que si vos données sont simples et se composent de types de données primitifs, par ex. int. Les types spécifiques à ClickHouse, tels que Map, ne sont pas pris en charge.
Licence
Étapes
Rassemblez vos informations de connexion
Les informations de votre service ClickHouse Cloud sont disponibles dans la console ClickHouse Cloud.
Sélectionnez un service, puis cliquez sur Connect :

curl.

1
Installer Kafka Connect et le connecteur
Nous partons du principe que vous avez téléchargé le paquet Confluent et que vous l’avez installé localement. Suivez les instructions d’installation pour installer le connecteur, comme indiqué ici.Si vous utilisez la méthode d’installation
confluent-hub, vos fichiers de configuration locaux seront mis à jour.Pour envoyer des données de Kafka vers ClickHouse, nous utilisons le composant Sink du connecteur.2
Télécharger et installer le pilote JDBC
Téléchargez et installez le ClickHouse JDBC driver
clickhouse-jdbc-<version>-shaded.jar depuis ici. Installez-le dans Kafka Connect en suivant les instructions ici. D’autres pilotes peuvent fonctionner, mais n’ont pas été testés.Problème courant : la documentation suggère de copier le fichier JAR dans
share/java/kafka-connect-jdbc/. Si Connect ne parvient pas à localiser le driver, copiez-le dans share/confluent-hub-components/confluentinc-kafka-connect-jdbc/lib/. Vous pouvez également modifier plugin.path pour inclure le driver - voir ci-dessous.3
Préparer la configuration
Suivez ces instructions pour configurer Connect en fonction de votre type d’installation, en tenant compte des différences entre un cluster autonome et un cluster distribué. Si vous utilisez Confluent Cloud, c’est la configuration distribuée qui s’applique.Les paramètres suivants sont pertinents pour utiliser le connecteur JDBC avec ClickHouse. La liste complète des paramètres est disponible ici :
_connection.url_- doit prendre la formejdbc:clickhouse://<clickhouse host>:<clickhouse http port>/<target database>connection.user- un utilisateur disposant d’un accès en écriture à la base de données cibletable.name.format- table ClickHouse dans laquelle insérer les données. Elle doit déjà exister.batch.size- Le nombre de lignes à envoyer dans un même lot. Assurez-vous que cette valeur est suffisamment élevée. Selon les recommandations de ClickHouse, 1000 doit être considéré comme un minimum.tasks.max- Le connecteur JDBC Sink prend en charge l’exécution d’une ou plusieurs tâches. Cela peut améliorer les performances. Avec la taille du lot, c’est votre principal levier d’optimisation des performances.value.converter.schemas.enable- Définissez sur false si vous utilisez un registre de schémas, sur true si vous intégrez vos schémas dans les messages.value.converter- Définissez selon votre type de données, par ex. pour JSON,io.confluent.connect.json.JsonSchemaConverter.key.converter- Définissez surorg.apache.kafka.connect.storage.StringConverter. Nous utilisons des clés de type String.pk.mode- Non pertinent pour ClickHouse. Définissez sur none.auto.create- Non pris en charge et doit être false.auto.evolve- Nous recommandons false pour ce paramètre, bien qu’il puisse être pris en charge à l’avenir.insert.mode- Définissez sur “insert”. Les autres modes ne sont actuellement pas pris en charge.key.converter- Définissez selon le type de vos clés.value.converter- Définissez en fonction du type de données de votre topic. Ces données doivent utiliser un schéma pris en charge : JSON, Avro ou Protobuf.
value.converter.schemas.enable- Définissez sur false, car nous utilisons un registre de schémas. Définissez sur true si vous intégrez le schéma dans chaque message.key.converter- Définissez sur “org.apache.kafka.connect.storage.StringConverter”. Nous utilisons des clés de type String.value.converter- Définissez sur “io.confluent.connect.json.JsonSchemaConverter”.value.converter.schema.registry.url- Définissez l’URL du serveur de schémas, ainsi que les informations d’identification de ce serveur via le paramètrevalue.converter.schema.registry.basic.auth.user.info.
4
Créer la table ClickHouse
Assurez-vous que la table a bien été créée, en la supprimant si elle existe déjà à la suite d’exemples précédents. Un exemple compatible avec le jeu de données GitHub réduit est présenté ci-dessous. Notez l’absence de types Array ou Map, qui ne sont actuellement pas pris en charge :
6
Ajouter des données dans Kafka
Insérez des messages dans Kafka à l’aide du script et de la config fournis. Vous devrez modifier github.config pour y inclure vos identifiants Kafka. Le script est actuellement configuré pour être utilisé avec Confluent Cloud.Ce script peut être utilisé pour insérer n’importe quel fichier ndjson dans un topic Kafka. Il tentera d’inférer automatiquement un schéma pour vous. L’exemple de config fourni n’insérera que 10k messages - modifiez ici si nécessaire. Cette configuration supprime également tous les champs Array incompatibles du jeu de données lors de l’insertion dans Kafka.Cela est nécessaire pour que le connecteur JDBC convertisse les messages en instructions INSERT. Si vous utilisez vos propres données, assurez-vous soit d’insérer un schéma avec chaque message (en définissant _value.converter.schemas.enable _sur true), soit que votre client publie des messages faisant référence à un schéma dans le registre.Kafka Connect devrait commencer à consommer les messages et à insérer des lignes dans ClickHouse. Notez que les avertissements concernant “[JDBC Compliant Mode] Transaction isn’t supported.” sont attendus et peuvent être ignorés.Une simple lecture de la table cible “Github” devrait confirmer l’insertion des données.
Lectures complémentaires recommandées
- Paramètres de configuration du sink Kafka
- Analyse approfondie de Kafka Connect – connecteur source JDBC
- Analyse approfondie du sink JDBC de Kafka Connect : utilisation des clés primaires
- Kafka Connect en action : sink JDBC - pour celles et ceux qui préfèrent regarder plutôt que lire.
- Analyse approfondie de Kafka Connect – convertisseurs et sérialisation expliqués