Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Connecter Apache NiFi à ClickHouse

Géré par la communauté

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.

Rassemblez vos informations de connexion

Pour vous connecter à ClickHouse via HTTP(S), vous avez besoin des informations suivantes :

Paramètre(s) Description
HOST and PORT En général, le port est 8443 lors de l’utilisation de TLS, ou 8123 sans TLS.
DATABASE NAME Par défaut, une base de données nommée default est disponible ; utilisez le nom de la base de données à laquelle vous voulez vous connecter.
USERNAME and PASSWORD Par défaut, le nom d’utilisateur est default. Utilisez le nom d’utilisateur adapté à votre cas d’usage.

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.

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

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

[object Object]

  1. Pour configurer un Controller Service dans Apache NiFi, accédez à la page de configuration du flux NiFi en cliquant sur le bouton "gear"

    Page de configuration du flux NiFi avec le bouton gear mis en évidence
  2. Sélectionnez l’onglet Controller Services et ajoutez un nouveau Controller Service en cliquant sur le bouton + en haut à droite

    Onglet Controller Services avec le bouton d’ajout mis en évidence
  3. Recherchez DBCPConnectionPool, puis cliquez sur le bouton "Add"

    Boîte de dialogue de sélection du Controller Service avec DBCPConnectionPool mis en évidence
  4. Le DBCPConnectionPool nouvellement ajouté sera, par défaut, dans un état invalide. Cliquez sur le bouton "gear" pour commencer la configuration

    Liste des Controller Services affichant un DBCPConnectionPool invalide avec le bouton gear mis en évidence
  5. Dans la section "Properties", saisissez les valeurs suivantes

Property Value Remark
URL de connexion à la base de données jdbchttps://HOSTNAME:8443/default?ssl=truetrue Remplacez HOSTNAME dans l’URL de connexion en conséquence
Nom de la classe du driver de base de données com.clickhouse.jdbc.ClickHouseDriver
Emplacements du driver de base de données /etc/nifi/nifi-X.XX.X/lib/clickhouse-jdbc-0.X.X-patchXX-shaded.jar Chemin absolu vers le fichier JAR du ClickHouse JDBC driver
Utilisateur de la base de données default Nom d’utilisateur ClickHouse
Mot de passe password Mot de passe ClickHouse
  1. Dans la section Settings, remplacez le nom du Controller Service par "ClickHouse JDBC" pour le retrouver plus facilement

    Boîte de dialogue de configuration de DBCPConnectionPool affichant les propriétés renseignées
  2. Activez le Controller Service DBCPConnectionPool en cliquant sur le bouton "lightning", puis sur le bouton "Enable"

    Liste des Controller Services avec le bouton lightning mis en évidence

    Boîte de dialogue de confirmation d’activation du Controller Service
  3. Vérifiez dans l’onglet Controller Services que le Controller Service est bien activé

    Liste des Controller Services affichant le service ClickHouse JDBC activé

[object Object]

  1. Ajoutez un processeur ​​ExecuteSQL, ainsi que les processeurs en amont et en aval appropriés

    Canvas NiFi montrant le processeur ExecuteSQL dans un workflow
  2. Dans la section "Propriétés" du processeur ​​ExecuteSQL, saisissez les valeurs suivantes

    Propriété Valeur Remarque
    Service de pool de connexions à la base de données ClickHouse JDBC Sélectionnez le service de contrôleur configuré pour ClickHouse
    Requête SQL SELECT SELECT * FROM system.metrics Saisissez votre requête ici
  3. Démarrez le processeur ​​ExecuteSQL

    Configuration du processeur ExecuteSQL avec les propriétés renseignées
  4. Pour confirmer que la requête a bien été traitée, inspectez l’un des FlowFile dans la file d’attente de sortie

    Boîte de dialogue de liste de file d’attente montrant des FlowFile prêts à être inspectés
  5. Basculez sur la vue "formatted" pour afficher le résultat du FlowFile de sortie

    Visionneuse de contenu FlowFile affichant le résultat de la requête dans la vue formatée

[object Object]

  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

    Propriété Valeur Remarque
    Record Reader JSONTreeReader Sélectionnez le lecteur d’enregistrements approprié
    Record Writer JSONReadSetWriter Sélectionnez le writer d’enregistrements approprié
    Minimum Number of Records 1000 Remplacez cette valeur par un nombre plus élevé afin de fusionner un nombre minimal de lignes en un seul enregistrement. La valeur par défaut est de 1 ligne
    Maximum Number of Records 10000 Remplacez cette valeur par un nombre supérieur à "Minimum Number of Records". La valeur par défaut est de 1 000 lignes
  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

    Entrée du processeur MergeRecord montrant des enregistrements individuels

    Sortie

    Sortie du processeur MergeRecord montrant un tableau fusionné d’enregistrements
  4. Dans la section "Properties" du processeur PutDatabaseRecord, saisissez les valeurs suivantes

    Propriété Valeur Remarque
    Record Reader JSONTreeReader Sélectionnez le lecteur d’enregistrements approprié
    Database Type Generic Laissez la valeur par défaut
    Statement Type INSERT
    Database Connection Pooling Service ClickHouse JDBC Sélectionnez le service contrôleur ClickHouse
    Table Name tbl Saisissez ici le nom de votre table
    Translate Field Names false Définissez cette valeur sur "false" afin que les noms de champs insérés correspondent aux noms des colonnes
    Maximum Batch Size 1000 Nombre maximal de lignes par insertion. Cette valeur ne doit pas être inférieure à celle de "Minimum Number of Records" dans le processeur MergeRecord
  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.

    Résultat de la requête montrant le nombre de lignes dans la table de destination
  6. Félicitations - vous avez chargé vos données dans ClickHouse avec Apache NiFi !

Navigation