Skip to main content
Apache NiFi est un logiciel open source de gestion de workflows conçu pour automatiser les flux de données entre différents systèmes logiciels. Il permet de créer des pipelines ETL et est livré avec plus de 300 processeurs de données. Ce tutoriel pas à pas montre comment connecter Apache NiFi à ClickHouse à la fois comme source et comme destination, puis charger un jeu de données d’exemple.
1

Rassemblez vos informations de connexion

Pour vous connecter à ClickHouse via HTTP(S), vous avez besoin des informations suivantes :Les informations de votre service ClickHouse Cloud sont disponibles dans la console ClickHouse Cloud. Sélectionnez un service, puis cliquez sur Connect :
Bouton Connect du service ClickHouse Cloud
Choisissez HTTPS. Les détails de connexion s’affichent dans un exemple de commande curl.
Détails de connexion HTTPS ClickHouse Cloud
Si vous utilisez ClickHouse autogéré, les détails de connexion sont définis par votre administrateur ClickHouse.
2

Télécharger et exécuter Apache NiFi

Pour une nouvelle installation, téléchargez le binaire depuis https://nifi.apache.org/download.html, puis lancez-le en exécutant ./bin/nifi.sh start
3

Télécharger le pilote JDBC ClickHouse

  1. Accédez à la page des versions du pilote JDBC ClickHouse sur GitHub et recherchez la dernière version publiée du pilote JDBC
  2. Dans cette version, cliquez sur “Show all xx assets” et recherchez le fichier JAR contenant le mot-clé “shaded” ou “all”, par exemple clickhouse-jdbc-0.5.0-all.jar
  3. Placez le fichier JAR dans un dossier accessible à Apache NiFi et notez le chemin absolu
4

Ajouter le Controller Service DBCPConnectionPool et configurer ses propriétés

  1. Pour configurer un Controller Service dans Apache NiFi, accédez à la page de configuration du flux NiFi en cliquant sur le bouton “gear”
  2. Sélectionnez l’onglet Controller Services et ajoutez un nouveau Controller Service en cliquant sur le bouton + en haut à droite
  3. Recherchez DBCPConnectionPool, puis cliquez sur le bouton “Add”
  4. Le DBCPConnectionPool nouvellement ajouté sera, par défaut, dans un état invalide. Cliquez sur le bouton “gear” pour commencer la configuration
  5. Dans la section “Properties”, saisissez les valeurs suivantes
  1. Dans la section Settings, remplacez le nom du Controller Service par “ClickHouse JDBC” pour le retrouver plus facilement
  2. Activez le Controller Service DBCPConnectionPool en cliquant sur le bouton “lightning”, puis sur le bouton “Enable”
  3. Vérifiez dans l’onglet Controller Services que le Controller Service est bien activé
5

Lire des données d’une table à l’aide du processeur ExecuteSQL

  1. Ajoutez un processeur ​​ExecuteSQL, ainsi que les processeurs en amont et en aval appropriés
  2. Dans la section “Propriétés” du processeur ​​ExecuteSQL, saisissez les valeurs suivantes
  3. Démarrez le processeur ​​ExecuteSQL
  4. Pour confirmer que la requête a bien été traitée, inspectez l’un des FlowFile dans la file d’attente de sortie
  5. Basculez sur la vue “formatted” pour afficher le résultat du FlowFile de sortie
6

Écrire dans une table à l’aide des processeurs MergeRecord et PutDatabaseRecord

  1. Pour écrire plusieurs lignes en une seule insertion, vous devez d’abord fusionner plusieurs enregistrements en un seul. Pour cela, utilisez le processeur MergeRecord
  2. Dans la section “Properties” du processeur MergeRecord, saisissez les valeurs suivantes
  3. Pour vérifier que plusieurs enregistrements sont bien fusionnés en un seul, examinez l’entrée et la sortie du processeur MergeRecord. Notez que la sortie est un tableau contenant plusieurs enregistrements d’entrée Entrée Sortie
  4. Dans la section “Properties” du processeur PutDatabaseRecord, saisissez les valeurs suivantes
  5. Pour vérifier que chaque insertion contient plusieurs lignes, assurez-vous que le nombre de lignes de la table augmente d’au moins la valeur de “Minimum Number of Records” définie dans MergeRecord.
  6. Félicitations - vous avez chargé vos données dans ClickHouse avec Apache NiFi !
Dernière modification le 24 juillet 2026