Skip to main content

Vue d’ensemble

Cet article décrit le processus d’envoi de données d’un topic Kafka vers une table ClickHouse. Nous utiliserons le flux des modifications récentes de Wikimedia, qui fournit un flux d’événements représentant les changements apportés à différents projets Wikimedia. Les étapes sont les suivantes :
  1. Comment configurer Kafka sur Ubuntu
  2. Ingérer un flux de données dans un topic Kafka
  3. Créer une table ClickHouse qui s’abonne au topic

1. Configurer Kafka sur Ubuntu

  1. Créez une instance ec2 sous Ubuntu et connectez-vous-y en SSH :
  1. Installez Kafka (en suivant les instructions ici : https://www.linode.com/docs/guides/how-to-install-apache-kafka-on-ubuntu/) :
  1. Démarrez ZooKeeper :
  1. Ouvrez un nouveau terminal et lancez Kafka :
  1. Ouvrez un troisième terminal et créez un topic nommé wikimedia :
  1. Vous pouvez vérifier qu’il a bien été créé en :

2. Ingérer le flux Wikimedia dans Kafka

  1. Nous avons d’abord besoin de quelques utilitaires :
  1. Les données sont envoyées à Kafka à l’aide d’une commande curl astucieuse qui récupère les derniers événements Wikimedia, en extrait les données JSON, puis les envoie au topic Kafka :
  1. Vous pouvez « décrire » le topic :
  1. Vérifions que tout fonctionne en consommant quelques événements :
  1. Appuyez sur Ctrl+c pour interrompre la commande précédente.

3. Ingérez les données dans ClickHouse

  1. Voici à quoi ressemblent les données reçues :
  1. Nous aurons besoin du moteur de table Kafka pour récupérer les données du topic Kafka :
  1. Pour une raison quelconque, le moteur de table Kafka semble prendre l’URL ec2 publique et la convertir en nom DNS privé. J’ai donc dû l’ajouter à mon fichier local /etc/hosts :
  1. Vous pouvez lire depuis une table Kafka ; il vous suffit d’activer un paramètre :
Les lignes devraient s’afficher correctement, selon les colonnes définies dans la table wikiQueue :
  1. Il nous faut une table MergeTree pour stocker ces événements entrants :
  1. Définissons une vue matérialisée qui se déclenche lorsqu’une insertion a lieu sur la table Kafka et envoie les données vers notre table rawEvents :
  1. Vous devriez commencer à voir des données arriver dans rawEvents presque immédiatement :
  1. Affichons quelques lignes :
  1. Voyons quels types d’événements arrivent :
Définissons une vue matérialisée enchaînée à notre vue matérialisée actuelle. Nous y suivrons quelques statistiques agrégées par minute :
  1. Il nous faudra des fonctions -Merge pour afficher les résultats :
Dernière modification le 3 juillet 2026