Ce document présente un exemple de connexion d'Apache NiFi à Hologres.
Contexte
Apache NiFi est un système fiable et simple d'utilisation pour le traitement et la distribution des données. Il automatise les flux de données entre différents systèmes. Apache NiFi offre une interface web interactive et conviviale pour gérer et traiter des flux de données au sein d'un même système ou entre plusieurs systèmes.
Prérequis
Vous avez activé une instance Hologres. Pour plus d'informations, consultez la rubrique Achat d'une instance Hologres.
Vous avez installé Apache NiFi. Pour plus d'informations, consultez la documentation Installation et démarrage de NiFi.
Écriture d'un fichier JSON local dans Hologres
Le workflow suivant écrit les données d'un fichier JSON local vers Hologres.
GetFile : lit un fichier JSON.
ConvertJSONToSQL : convertit les éléments du fichier JSON en instruction SQL INSERT.
PutSQL : exécute l'instruction SQL issue du processeur précédent pour insérer les données dans la base de données.
-
Créez une base de données et une table
Connectez-vous à votre instance Hologres et créez une base de données nommée demo. Pour plus d'informations, consultez la rubrique Création d'une base de données.
-
Créez une table.
Exécutez l'instruction SQL suivante pour créer la table de destination.
DROP TABLE IF EXISTS user_info; CREATE TABLE IF NOT EXISTS user_info ( id int, first_name text, last_name text, email text );
-
Configurez le processeur GetFile
-
Ajoutez un processeur GetFile.
Pour plus d'informations, consultez la documentation Ajout d'un processeur.
-
Spécifiez le chemin d'accès au fichier JSON.
Dans l'onglet PROPERTIES, saisissez le chemin de stockage de votre fichier JSON dans le champ Input Directory. Cet exemple utilise un fichier JSON nommé user_info.json, stocké dans le répertoire
/opt/nifi/nifi-current/file_sourcesur le serveur Apache NiFi. Le fichier contient les données suivantes :{ "id": 1, "first_name": "Sig", "last_name": "Olivo", "email": "solivo0@blinklist.com" }Voici un exemple de configuration. Conservez les valeurs par défaut pour les autres propriétés : File Filter est défini sur
[^\.].*, Keep Source File surfalse(supprime le fichier source après lecture), Batch Size sur10, Recurse Subdirectories surtrueet Polling Interval sur0 sec. Cliquez sur Apply pour enregistrer la configuration.
-
-
Configurez le processeur ConvertJSONToSQL
Ajoutez un processeur ConvertJSONToSQL.
Pour la propriété JDBC Connection Pool, créez un nouveau service. Définissez Compatible Controller Services sur DBCPConnectionPool et attribuez au Controller Service Name la valeur hologres.
Cliquez sur la flèche Go To (→) située à l'extrême droite de la ligne JDBC Connection Pool pour configurer la chaîne de connexion.
-
Repérez le service DBCPConnectionPool que vous venez de créer et cliquez sur son icône de paramètres.
Dans l'onglet CONTROLLER SERVICES, repérez le service DBCPConnectionPool nommé hologres et cliquez sur l'icône de paramètres (une roue dentée) située à droite.
-
Dans l'onglet PROPERTIES de la page des paramètres, configurez les paramètres suivants.
Paramètre
Description
Description
Database Connection URL
Chaîne de connexion JDBC de l'instance Hologres. Le format est
jdbc:postgresql://<endpoint>/<database name>. Exemple :jdbc:postgresql://hgpostcn-cn-xxxxxxxxxxx-cn-shanghai.hologres.aliyuncs.com:80/demo.L'endpoint doit être un endpoint public ou VPC (Virtual Private Cloud). Pour obtenir l'endpoint, accédez à la page des détails de l'instance dans la console Hologres.
Database Driver Class Name
org.postgresql.Driver
S.O.
Database Driver Location(s)
Chemin de stockage du pilote JDBC PostgreSQL. Exemple :
/opt/nifi/nifi-current/jdbc_driver/postgresql-42.3.4.jar.Vous pouvez télécharger le pilote JDBC depuis le site officiel de PostgreSQL. Nous vous recommandons d'utiliser la version 42.2.25 ou ultérieure du pilote JDBC.
Database User
ID AccessKey de votre compte Alibaba Cloud.
Pour obtenir votre ID AccessKey, accédez à la page Gestion des AccessKeys.
Password
Secret AccessKey de votre compte Alibaba Cloud.
Cliquez sur OK pour finaliser la configuration.
Cliquez sur ENABLE pour démarrer le service de contrôleur.
-
Revenez à la configuration du processeur ConvertJSONToSQL et définissez les paramètres suivants. Pour plus d'informations, consultez la documentation officielle de NiFi.
|
**Paramètre**
|
**Description**
| | --- | --- | |
Statement Type
|
Type d'instruction SQL à générer. Dans cet exemple, utilisez `INSERT`.
| |
Table Name
|
Nom de la table de destination. Dans cet exemple, utilisez `user_info`.
| |
Schema Name
|
Schéma de la table de destination. Dans cet exemple, utilisez `public`.
| Cliquez sur Apply pour finaliser la configuration.
-
Configurez le processeur PutSQL
Ajoutez un processeur PutSQL.
Définissez JDBC Connection Pool sur le service DBCPConnectionPool configuré à l'étape précédente. Dans cet exemple, le nom du service DBCPConnectionPool est
hologres.Définissez Support Fragmented Transactions sur false.
Cliquez sur Apply pour finaliser la configuration.
-
Démarrez l'écriture des données
La configuration est terminée. Démarrez tous les processeurs afin de lire le fichier JSON et d'écrire ses données dans Hologres. Le pipeline de flux de données NiFi se compose de trois processeurs connectés en séquence : GetFile (lit le fichier JSON local, 105 octets en sortie) → ConvertJSONToSQL (convertit le JSON en instruction SQL, 83 octets en sortie) → PutSQL (exécute l'instruction SQL pour écrire dans la base de données). Après l'exécution, les files d'attente success et sql vides indiquent que les données ont bien été écrites dans Hologres.
-
Interrogez les données
Exécutez la commande suivante dans Hologres pour interroger la table user_info et afficher les données importées.
SELECT * FROM user_info;La requête renvoie quatre colonnes (
id,first_name,last_nameetemail) et une ligne de données : id=1, first_name=Sig, last_name=Olivo, email=solivo0@blinklist.com. Ce résultat confirme que les données du fichier JSON local ont bien été écrites dans Hologres.