Lire et écrire des données dans HDFS

Dans ce tutoriel, apprenez à générer des données aléatoires et à les écrire dans HDFS. Puis lisez les données depuis HDFS, triez-les et affichez-les dans la console.

Ce tutoriel utilise Talend Data Fabric Studio version 6 et un cluster Hadoop : Cloudera CDH version 5.4.

1. Créer un Job standard.

  1. Vérifiez que la perspective Integration (Intégration) est sélectionnée.
  2. Pour vous assurer que les métadonnées de connexion du cluster Hadoop et de la connexion HDFS ont été créées dans le Référentiel de projet, développez Hadoop Cluster (Cluster Hadoop).
  3. Dans le Référentiel, développez Job Designs (Jobs), cliquez avec le bouton droit sur Standard, puis cliquez sur Create Standard Job (Créer un Job standard). Dans le champ Name (Nom) de l'assistant New Job (Nouveau Job), saisissez ReadWriteHDFS. Dans le champ Purpose (Objectif), saisissez Read/Write data in HDFS (Lire/écrire des données dans HDFS), et dans le champ Description, saisissez Standard job to write and read customers data to and from HDFS (Job standard pour lire et écrire des données depuis et vers HDFS), puis cliquez sur Finish (Terminer). Le Job s'ouvre dans le Job Designer.
  4. 2. Ajouter et configurer un composant tRowGenerator pour générer des données client aléatoires.

  5. Pour générer des données client aléatoires, ajoutez un composant tRowGenerator dans le Job Designer.
  6. Pour définir le schéma et les paramètres de fonction du composant tRowGenerator, double-cliquez sur tRowGenerator_1.
  7. Pour ajouter des colonnes au schéma, cliquez trois fois sur l'icône [+] et entrez le nom des colonnes : CustomerID (ID client), FirstName (Prénom) et LastName (Nom). Vous devez ensuite configurer des attributs pour ces champs.
  8. Pour changer le type de la colonne CustomerID, cliquez sur le champ Type, puis sur Integer. Définissez ensuite le champ Functions (Fonctions) de ces trois colonnes sur random(int,int), TalendDataGenerator.getFirstName() et TalendDataGenerator.getLastName() respectivement.
  9. Dans la table, sélectionnez la colonne CustomerID, puis dans l'onglet Functions parameters Paramètres de la fonction, définissez la valeur maximale sur 1000.
  10. Dans le champ Number of Rows for RowGenerator (Nombre de lignes pour RowGenerator), saisissez 1000 et cliquez sur OK pour enregistrer la configuration.

3. Écrire des données dans HDFS

Vous créerez un nouveau composant tHDFSOutput qui réutilise les métadonnées HDFS disponibles dans le Référentiel de projet.

  1. Dans le Référentiel, sous Metadata > HadoopCluster > MyHadoopCluster > HDFS (Métadonnées > Cluster Hadoop > MyHadoopCluster > HDFS), cliquez sur MyHadoopCluster_HDFS et déplacez cet élément vers le Job Designer.
  2. Dans la liste Components (Composants), sélectionnez tHDFSOutput et cliquez sur OK.
  3. Créez un flux de données depuis le composant tRowGenerator_1 vers le composant MyHadoopCluster_HDFS, en liant les deux composants avec une ligne Main, puis double-cliquez sur le composant MyHadoopCluster_HDFS pour ouvrir la vue Component (Composant).

    Notez que le composant est déjà configuré avec les informations de connexion des métadonnées HDFS.
  4. Dans la zone File Name (Nom du fichier), saisissez /user/student/CustomersData et dans la liste Action, sélectionnez Overwrite (Écraser).

Le premier sous-projet permettant d'écrire des données dans HDFS est prêt. Il récupère les données générées dans le composant tRowGenerator que vous avez créé et les écrit dans HDFS en utilisant une connexion définie à l'aide de métadonnées.

4. Lire des données dans HDFS.

Vous allez concevoir un sous-projet pour lire les données client depuis HDFS, les trier et les afficher dans la console. Pour lire les données client depuis HDFS, vous créerez un nouveau composant tHDFSInput réutilisant les métadonnées HDFS disponibles dans le Référentiel de projet.

  1. Dans le Référentiel, sous Metadata > HadoopCluster > MyHadoopCluster > HDFS (Métadonnées > Cluster Hadoop > MyHadoopCluster > HDFS), cliquez sur MyHadoopCluster_HDFS et déplacez cet élément vers le Job Designer.
  2. Dans la fenêtre Components (Composants), sélectionnez tHDFSInput et cliquez sur OK.
  3. Pour ouvrir la vue Component (Composant) du composant d'entrée MyHadoopCluster_HDFS, double-cliquez sur MyHadoopCluster_HDFS.

    Notez que le composant est déjà configuré avec les informations de connexion des métadonnées HDFS.
  4. Dans la zone File Name (Nom du fichier), saisissez /user/student/CustomersData.

5. Spécifier le schéma dans le composant d'entrée MyHadoopCluster_HDFS pour lire les données dans HDFS

  1. Pour ouvrir l'éditeur de schéma, dans la vue Component (Composant) du composant d'entrée MyHadoopCluster_HDFS, cliquez sur Edit schema (Modifier le schéma).
  2. Pour ajouter des colonnes au schéma, cliquez trois fois sur l'icône [+] et entrez le nom des colonnes : CustomerID (ID client), FirstName (Prénom) et LastName (Nom).
  3. Pour modifier le type de la colonne CustomerID, cliquez sur le champ Type, puis sur Integer.

    Remarque : ce schéma est le même que celui des composants tRowGenerator et tHDFSOutput. Vous pouvez donc le copier depuis l'un de ces composants et le coller ici.
  4. Connectez le composant tRowGenerator au composant d'entrée MyHadoopCluster_HDFS à l'aide d'un déclencheur OnSubjobOk.

6. Trier les données par ordre ascendant de CustomerID à l'aide du composant tSortRow

  1. Ajoutez un composant tSortRow et connectez-le au composant d'entrée MyHadoopCluster_HDFS à l'aide d'une ligne Main.
  2. Pour ouvrir la vue Component (Composant) de tSortRow, double-cliquez sur ce composant.
  3. Pour configurer le schéma, cliquez sur Sync columns (Sync colonnes).
  4. Pour ajouter un nouveau critère à la table Criteria (Critères), cliquez sur [+] et, dans la colonne Schema (Schéma), saisissez CustomerID. Dans la colonne sort num or alpha? (Tri num ou alpha ?), sélectionnez num et dans la colonne Order asc or desc? (Ordre asc ou desc ?), sélectionnez asc.

7. Afficher les données triées dans la console à l'aide d'un composant tLogRow

  1. Ajoutez un composant tLogRow et connectez-le au composant tSortRow avec une ligne Main.
  2. Pour ouvrir la vue Component (Composant) de tLogRow, double-cliquez sur ce composant.
  3. Dans le panneau Mode, sélectionnez Table.

Votre job est prêt. Il génère d'abord des données et les écrit dans HDFS. Ensuite, il lit les données depuis HDFS, les trie et les affiche dans la console.

8. Exécuter le job et observer les résultats dans la console

  1. Pour exécuter le Job, cliquez sur Run (Exécuter) dans la vue Run (Exécuter).
  2. Les données triées sont affichées dans la console.