> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Acheminez des données en continu vers ClickHouse à l’aide des pipelines de données NiFi

# Connecter Apache NiFi à ClickHouse

export const CommunityMaintainedBadge = () => {
  return <div className="CommunityMaintainedBadge">
            <div className="CommunityMaintainedIcon">
            <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" viewBox="0 0 256 256">
                <path d="M244.8,150.4a8,8,0,0,1-11.2-1.6A51.6,51.6,0,0,0,192,128a8,8,0,0,1-7.37-4.89,8,8,0,0,1,0-6.22A8,8,0,0,1,192,112a24,24,0,1,0-23.24-30,8,8,0,1,1-15.5-4A40,40,0,1,1,219,117.51a67.94,67.94,0,0,1,27.43,21.68A8,8,0,0,1,244.8,150.4ZM190.92,212a8,8,0,1,1-13.84,8,57,57,0,0,0-98.16,0,8,8,0,1,1-13.84-8,72.06,72.06,0,0,1,33.74-29.92,48,48,0,1,1,58.36,0A72.06,72.06,0,0,1,190.92,212ZM128,176a32,32,0,1,0-32-32A32,32,0,0,0,128,176ZM72,120a8,8,0,0,0-8-8A24,24,0,1,1,87.24,82a8,8,0,1,0,15.5-4A40,40,0,1,0,37,117.51,67.94,67.94,0,0,0,9.6,139.19a8,8,0,1,0,12.8,9.61A51.6,51.6,0,0,1,64,128,8,8,0,0,0,72,120Z"></path>
            </svg>
        </div>
            Géré par la communauté
        </div>;
};

export const Image = ({img, alt, size = "lg"}) => {
  const normalizedSize = ["sm", "md", "lg"].includes(size) ? size : "lg";
  return <div className={`ch-image-${normalizedSize}`}>
      <Frame>
        <img src={img} alt={alt} />
      </Frame>
    </div>;
};

<CommunityMaintainedBadge />

<a href="https://nifi.apache.org/" target="_blank">Apache NiFi</a> 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.

<Steps>
  <Step title="Rassemblez vos informations de connexion" id="1-gather-your-connection-details">
    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** :

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/cloud-connect-button.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=ec0a298a33ca841e947fa5e8bae47362" alt="Bouton Connect du service ClickHouse Cloud" width="998" height="932" data-path="images/_snippets/cloud-connect-button.webp" />
      </Frame>
    </div>

    Choisissez **HTTPS**. Les détails de connexion s’affichent dans un exemple de commande `curl`.

    <div className="ch-image-md">
      <Frame>
        <img src="https://mintcdn.com/private-7c7dfe99/CFFsa2agBPbviR4r/images/_snippets/connection-details-https.webp?fit=max&auto=format&n=CFFsa2agBPbviR4r&q=85&s=cb0fbd98aa2b5b7ca484c9f53395ee07" alt="Détails de connexion HTTPS ClickHouse Cloud" width="1320" height="1184" data-path="images/_snippets/connection-details-https.webp" />
      </Frame>
    </div>

    Si vous utilisez ClickHouse autogéré, les détails de connexion sont définis par votre administrateur ClickHouse.
  </Step>

  <Step title="Télécharger et exécuter Apache NiFi" id="2-download-and-run-apache-nifi">
    Pour une nouvelle installation, téléchargez le binaire depuis [https://nifi.apache.org/download.html](https://nifi.apache.org/download.html), puis lancez-le en exécutant `./bin/nifi.sh start`
  </Step>

  <Step title="Télécharger le pilote JDBC ClickHouse" id="3-download-the-clickhouse-jdbc-driver">
    1. Accédez à la <a href="https://github.com/ClickHouse/clickhouse-java/releases" target="_blank">page des versions du pilote JDBC ClickHouse</a> 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
  </Step>

  <Step title={<>Ajouter le Controller Service <code>DBCPConnectionPool</code> et configurer ses propriétés</>} id="4-add-dbcpconnectionpool-controller-service-and-configure-its-properties">
    1. Pour configurer un Controller Service dans Apache NiFi, accédez à la page de configuration du flux NiFi en cliquant sur le bouton "gear"

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_01.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=3ecb50806baacf0177cdde10d0bea34c" size="sm" border alt="Page de configuration du flux NiFi avec le bouton gear mis en évidence" width="564" height="409" data-path="images/integrations/data-ingestion/etl-tools/nifi_01.webp" />

    2. Sélectionnez l’onglet Controller Services et ajoutez un nouveau Controller Service en cliquant sur le bouton `+` en haut à droite

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_02.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=e49f17a3ccf81855ddf6f33ae71f8b2d" size="lg" border alt="Onglet Controller Services avec le bouton d’ajout mis en évidence" width="1999" height="636" data-path="images/integrations/data-ingestion/etl-tools/nifi_02.webp" />

    3. Recherchez `DBCPConnectionPool`, puis cliquez sur le bouton "Add"

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_03.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=a214a72eb65b893a71426c349c6851a4" size="lg" border alt="Boîte de dialogue de sélection du Controller Service avec DBCPConnectionPool mis en évidence" width="1999" height="1287" data-path="images/integrations/data-ingestion/etl-tools/nifi_03.webp" />

    4. Le `DBCPConnectionPool` nouvellement ajouté sera, par défaut, dans un état invalide. Cliquez sur le bouton "gear" pour commencer la configuration

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_04.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=5bc4d67491b1e5958664762878c41a87" size="lg" border alt="Liste des Controller Services affichant un DBCPConnectionPool invalide avec le bouton gear mis en évidence" width="1893" height="607" data-path="images/integrations/data-ingestion/etl-tools/nifi_04.webp" />

    5. Dans la section "Properties", saisissez les valeurs suivantes

    | Property                                      | Value                                                                                    | Remark                                                      |
    | --------------------------------------------- | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------- |
    | URL de connexion à la base de données         | jdbc[https://HOSTNAME:8443/default?ssl=true](https://HOSTNAME:8443/default?ssl=true)true | 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                                     |

    6. Dans la section Settings, remplacez le nom du Controller Service par "ClickHouse JDBC" pour le retrouver plus facilement

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_05.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=869cce96c0ee8ccd527695c8dea21af7" size="lg" border alt="Boîte de dialogue de configuration de DBCPConnectionPool affichant les propriétés renseignées" width="1586" height="1184" data-path="images/integrations/data-ingestion/etl-tools/nifi_05.webp" />

    7. Activez le Controller Service `DBCPConnectionPool` en cliquant sur le bouton "lightning", puis sur le bouton "Enable"

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_06.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=2460399dc3113d995786c373f7df4d37" size="lg" border alt="Liste des Controller Services avec le bouton lightning mis en évidence" width="2878" height="812" data-path="images/integrations/data-ingestion/etl-tools/nifi_06.webp" />

           <br />

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_07.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=485f45409ead4ff9cfb316e8ee2bc8d9" size="lg" border alt="Boîte de dialogue de confirmation d’activation du Controller Service" width="1586" height="1172" data-path="images/integrations/data-ingestion/etl-tools/nifi_07.webp" />

    8. Vérifiez dans l’onglet Controller Services que le Controller Service est bien activé

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_08.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=b7d9e1ce84d3bbd46d913e940847a610" size="lg" border alt="Liste des Controller Services affichant le service ClickHouse JDBC activé" width="1999" height="636" data-path="images/integrations/data-ingestion/etl-tools/nifi_08.webp" />
  </Step>

  <Step title={<>Lire des données d’une table à l’aide du processeur <code>ExecuteSQL</code></>} id="5-read-from-a-table-using-the-executesql-processor">
    1. Ajoutez un processeur ​`​ExecuteSQL`, ainsi que les processeurs en amont et en aval appropriés

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_09.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=abf11db5bb1dc248a233669a23aef33e" size="md" border alt="Canvas NiFi montrant le processeur ExecuteSQL dans un workflow" width="768" height="316" data-path="images/integrations/data-ingestion/etl-tools/nifi_09.webp" />

    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`

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_10.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=81d02e73ee6ca1d543015bc0667eb442" size="lg" border alt="Configuration du processeur ExecuteSQL avec les propriétés renseignées" width="858" height="220" data-path="images/integrations/data-ingestion/etl-tools/nifi_10.webp" />

    4. Pour confirmer que la requête a bien été traitée, inspectez l’un des `FlowFile` dans la file d’attente de sortie

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_11.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=270caae3211e7b81b50d1e309aba8606" size="lg" border alt="Boîte de dialogue de liste de file d’attente montrant des FlowFile prêts à être inspectés" width="1956" height="794" data-path="images/integrations/data-ingestion/etl-tools/nifi_11.webp" />

    5. Basculez sur la vue "formatted" pour afficher le résultat du `FlowFile` de sortie

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_12.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=1dc1c90d3bb71ab84465021653fddadf" size="lg" border alt="Visionneuse de contenu FlowFile affichant le résultat de la requête dans la vue formatée" width="1762" height="1500" data-path="images/integrations/data-ingestion/etl-tools/nifi_12.webp" />
  </Step>

  <Step title={<>Écrire dans une table à l’aide des processeurs <code>MergeRecord</code> et <code>PutDatabaseRecord</code></>} id="6-write-to-a-table-using-mergerecord-and-putdatabaserecord-processor">
    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

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_13.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=2ccc4198a02b0b3b7402ee79e5ae12c8" size="sm" border alt="Entrée du processeur MergeRecord montrant des enregistrements individuels" width="624" height="306" data-path="images/integrations/data-ingestion/etl-tools/nifi_13.webp" />

       Sortie

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_14.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=0b02a554dceeb6c594fd800d04dcfb89" size="sm" border alt="Sortie du processeur MergeRecord montrant un tableau fusionné d’enregistrements" width="707" height="501" data-path="images/integrations/data-ingestion/etl-tools/nifi_14.webp" />

    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`.

           <Image img="https://mintcdn.com/private-7c7dfe99/pIetLsS_hOGHqoPJ/images/integrations/data-ingestion/etl-tools/nifi_15.webp?fit=max&auto=format&n=pIetLsS_hOGHqoPJ&q=85&s=36b01a981712543038b0c3f5d2f06679" size="sm" border alt="Résultat de la requête montrant le nombre de lignes dans la table de destination" width="828" height="1306" data-path="images/integrations/data-ingestion/etl-tools/nifi_15.webp" />

    6. Félicitations - vous avez chargé vos données dans ClickHouse avec Apache NiFi !
  </Step>
</Steps>
