Fusionner les informations relatives aux films et aux réalisateurs à l'aide d'un Job MapReduce - 6.3

Talend Real-time Big Data Platform Guide de prise en main

EnrichVersion
6.3
EnrichProdName
Talend Real-Time Big Data Platform
task
Administration et monitoring
Création et développement
Déploiement
Installation et mise à niveau
Qualité et préparation de données
EnrichPlatform
Studio Talend
Talend Administration Center
Talend CommandLine
Talend DQ Portal
Talend ESB
Talend Installer
Talend Runtime

Ce scénario vous explique comment tirer parti simplement de la technologie MapReduce afin de lire, transformer et écrire des données relatives à des films et des réalisateurs, dans un environnement Hadoop.

Ce scénario présente comment :

  1. créer un Job MapReduce Talend. Consultez Créer le Job MapReduce pour plus d'informations.

  2. déposer et relier les composants à utiliser dans un Job MapReduce. Consultez Déposer et relier les composants MapReduce pour plus d'informations.

  3. configurer les composants d'entrée à l'aide des métadonnées associées, dans le Repository. Consultez Configurer les données d'entrée pour plus d'informations.

  4. configurer la transformation pour effectuer une jointure sur les données. Consultez Configurer la transformation de données pour plus d'informations.

  5. écrire les données transformées dans HDFS. Consultez Écrire la sortie dans HDFS pour plus d'informations.

Créer le Job MapReduce

Un Job MapReduce Talend vous permet d'accéder aux et d'utiliser les composants MapReduce Talend afin de construire graphiquement des programmes MapReduce pour lire, transformer ou écrire des données.

Prérequis :

  • Vous devez avoir démarré votre Studio Talend et ouvert la perspective Integration .

Procédez comme suit afin de créer le Job MapReduce :

  1. Dans la vue Repository, développez le nœud Job Designs, cliquez-droit sur le nœud Big Data Batch et sélectionnez Create folder dans le menu contextuel.

  2. Dans l'assistant [New Folder], nommez le dossier de Jobs getting_started, puis cliquez sur Finish pour créer le dossier.

  3. Cliquez-droit sur le dossier getting_started et sélectionnez à nouveau Create folder.

  4. Dans l'assistant [New Folder], nommez le nouveau dossier mapreduce et cliquez sur Finish pour créer le dossier.

  5. Cliquez-droit sur le dossier mapreduce et sélectionnez Create Big Data Batch Job.

  6. Dans l'assistant [New Big Data Batch Job], sélectionnez MapReduce dans la liste déroulante Framework.

  7. Saisissez un nom pour le Job MapReduce et saisissez d'autres informations utiles.

    Par exemple, saisissez aggregate_movie_director_mr dans le champ Name.

  8. Cliquez sur Finish pour créer votre Job.

    Un Job vide s'ouvre dans le Studio.

La Palette des composants MapReduce est disponible dans le Studio. Vous pouvez construire votre Job en utilisant cette Palette, ainsi que le nœud Metadata du Repository.

Déposer et relier les composants MapReduce

Vous pouvez orchestrer les composants MapReduce dans l'espace de modélisation graphique du Job afin de créer un processus de transformation de données s'exécutant dans le framework MapReduce.

Prérequis :

  • vous devez avoir démarré votre Studio Talend et ouvert la perspective Integration.

  • un Job vide doit avoir été créé comme décrit dans Créer le Job MapReduce et doit être ouvert dans l'espace de modélisation graphique.

Procédez comme suit pour ajouter et relier les composants :

  1. Dans le Job, saisissez le nom du composant à utiliser et sélectionnez ce composant dans la liste qui s'affiche. Dans ce scénario, les composants sont : deux tHDFSInput, un tFileInputDelimited, un tMap, un tHDFSOutput et un tFileOutputDelimited.

    • Les composants tHDFSInput et tFileInputDelimited sont utilisés pour charger les données des films et réalisateurs, respectivement, depuis HDFS dans le flux de données du Job.

    • Le tMap est utilisé pour transformer les données d'entrée.

    • Les composants tHDFSOuput et tFileOutputDelimited écrivent les résultats dans les répertoires données de HDFS.

  2. Double-cliquez sur le tHDFSInput pour pouvoir modifier son nom et saisissiez movie pour renommer le composant.

  3. Répétez l'opération pour nommer le tFileInputDelimited director.

  4. Cliquez-droit sur le composant tHDFSInput nommé movie et, dans le menu contextuel, sélectionnez Row > Main, puis cliquez sur le tMap, afin de relier ces deux composants.

    Ce lien est le lien principal à travers lequel les données des films sont envoyées au tMap.

  5. Répétez l'opération pour lier le composant director (tFileInputDelimited) au tMap, à l'aide d'un lien Row > Main.

    Ce lien Lookup est le lien de référence à travers lequel les données des réalisateurs sont envoyées au tMap en tant que données de référence.

  6. Répétez l'opération pour lier le tMap au tHDFSOutput à l'aide d'un lien Row > Main. Dans la boîte de dialogue qui s'ouvre, nommez le lien out1 et cliquez sur OK pour valider.

  7. Connectez le tMap au tFileOutputDelimited à l'aide d'un lien Row > Main que vous nommez reject.

Votre Job doit ressembler à ceci dans l'espace de modélisation graphique :

Configurer les données d'entrée

Le composant tHDFSInput et les composants tFileInputDelimited sont configurés pour charger des données de HDFS dans le Job.

Prérequis :

  • les fichiers source, movies.csv et directors.txt doivent avoir été chargés dans HDFS, comme expliqué dans Chargement des fichiers dans HDFS.

  • la métadonnée du fichier movie.csv a été configurée dans le dossier HDFS, sous le nœud Hadoop cluster, dans le Repository.

    Si ce n'est pas le cas, consultez Préparation de la métadonnée du fichier pour créer la métadonnée.

Une fois le Job créé, tous les composants MapReduce utilisés et reliés, vous devez configurer les composants d'entrée afin qu'ils lisent les données de HDFS.

  1. Développez le nœud Hadoop cluster sous le nœud Metadata du Repository, puis développez le nœud de connexion Hadoop my_cdh et ses fils, pour afficher le nœud du schéma movies, configuré dans le dossier HDFS, comme expliqué dans Préparation de la métadonnée du fichier.

  2. Déposez ce schéma sur le composant tHDFSInput nommé movie tHDFSInput, dans l'espace de modélisation graphique du Job.

  3. Double-cliquez sur le composant movie pour ouvrir sa vue Component.

    Le tHDFSInput a automatiquement réutilisé la configuration HDFS et la métadonnée du référentiel afin de configurer les paramètres, dans la vue Basic settings.

  4. Double-cliquez sur le composant director pour ouvrir sa vue Component.

  5. Cliquez sur le bouton [...] à côté du champ Edit schema pour ouvrir l'éditeur du schéma.

  6. Cliquez deux fois sur le bouton [+] pour ajouter deux lignes et, dans la colonne Column, renommez-les respectivement en ID et Name.

  7. Cliquez sur OK afin de valider ces modifications et acceptez la propagation proposée par la boîte de dialogue.

  8. Dans le champ Folder/File, saisissez le chemin d'accès ou parcourez votre système jusqu'au répertoire où sont stockées les données relatives aux réalisateurs. Comme expliqué dans Chargement des fichiers dans HDFS, ces données ont été écrites dans le fichier /user/ychen/input_data/directors.txt.

  9. Dans le champ Field separator, saisissez une virgule (,), car ce caractère est utilisé pour séparer les données des réalisateurs.

Les composants d'entrée sont configurés pour charger les données des films et réalisateurs dans le Job.

Configurer la transformation de données

Le composant tMap est configuré pour effectuer une jointure sur les données relatives aux films et aux réalisateurs.

Une fois les données chargées dans le Job, vous devez configurer le composant tMap pour qu'il effectue une jointure sur ces données, afin de produire la sortie attendue.

  1. Double-cliquez sur le tMap pour ouvrir son éditeur Map Editor.

  2. Déposez les colonnes movieID, title, releaseYear et url de gauche dans les tables de sortie.

    Du côté de l'entrée (gauche) de l'éditeur Map Editor, chacune des deux tables représente l'un des flux d'entrée. La table du haut représente le flux principal et la table du bas représente le flux de référence.

    Du côté de la sortie (droite), les deux tables représentent les flux de sortie nommés out1 et reject lorsque vous avez lié le tMap au tHDFSOutput et au tFileOutputDelimited dans Déposer et relier les composants MapReduce.

  3. Du côté de l'entrée, déposez la colonne directorID de la table du flux principal à la colonne Expr.key de la ligne ID, dans la table du flux de référence.

    Ainsi, la clé de jointure entre le flux principal et le flux de référence est définie.

  4. Déposez la colonne directorID du flux principal à la table reject de sortie, puis déposez la colonne Name de la table de référence à la table out1.

    La configuration dans les deux étapes précédentes permet de décrire la manière dont les colonnes des données d'entrée sont mappées aux colonnes du flux de sortie.

    Dans la vue Schema editor, dans la partie inférieure de l'éditeur, vous pouvez voir que les schémas des deux côtés ont été automatiquement renseignés.

  5. Dans la table de référence, cliquez sur le bouton pour afficher le panneau des paramètres pour l'opération de jointure.

  6. Dans la ligne Join model, cliquez sur la colonne Value et sur le bouton [...] affiché.

    La fenêtre [Options] s'ouvre.

  7. Sélectionnez Inner join afin d'écrire en sortie uniquement les enregistrements contenant les clés de jointures existant dans le flux principal et dans le flux de référence.

  8. Dans la table de sortie reject, cliquez sur le bouton pour ouvrir les paramètres.

  9. Dans la ligne Catch Lookup inner join reject, sélectionnez true pour écrire en sortie les enregistrements rejetés par la jointure Inner Join effectuée sur l'entrée.

  10. Cliquez sur Apply puis sur OK afin de valider ces modifications. Acceptez la propagation proposée par la boîte de dialogue.

La transformation est configurée pour compléter les données des films par les noms des réalisateurs et pour écrire les enregistrements de films ne contenant pas de données de réalisateur dans un flux de sortie séparé.

Écrire la sortie dans HDFS

Deux composants de sortie sont configurés pour écrire les données attendues des films et les données rejetées dans deux répertoires différents dans HDFS.

Prérequis :

  • Vous devez avoir vérifié que la machine cliente sur laquelle les Jobs Talend sont exécutés peut reconnaître les noms d'hôtes du cluster Hadoop à utiliser. Dans cet objectif, ajoutez les mappings des entrées adresse IP/nom d'hôte pour les services de ce cluster Hadoop dans le fichier hosts de la machine cliente.

    Par exemple, si le nom d'hôte du serveur du NameNode Hadoop est talend-cdh550.weave.local et son adresse IP est 192.168.x.x, l'entrée du mapping est la suivante 192.168.x.x talend-cdh550.weave.local.

  • le cluster Hadoop à utiliser doit avoir été configuré et être en cours d'exécution.

  • l'administrateur du cluster doit avoir donné les droits d'accès en lecture/écriture à l'utilisateur accédant aux données et répertoires dans HDFS.

Une fois les données des films et réalisateurs transformées par le tMap, vous devez configurer les deux composants de sortie pour écrire la sortie dans HDFS.

  1. Double-cliquez sur le tHDFSOutput recevant le lien out1.

    Sa vue Basic settings est ouverte dans la partie inférieure du Studio.

  2. Dans le champ Folder, saisissez le chemin d'accès ou parcourez votre système jusqu'au répertoire dans lequel écrire les résultats. Dans ce scénario, le chemin est /user/ychen/output_data/mapreduce/out, pointant vers le répertoire recevant les enregistrements contenant les noms des réalisateurs.

  3. Sélectionnez Overwrite dans la liste Action.

    Ainsi, le répertoire cible est écrasé s'il existe déjà.

  4. Cochez la case Merge result to single file afin de fusionner les fichiers part- générés par MapReduce en un seul fichier.

    Le champ Merge file path s'affiche.

  5. Dans le champ Merge file path, saisissez le chemin d'accès ou parcourez votre système jusqu'au fichier dans lequel vous souhaitez fusionner les fichiers part-.

    Dans ce scénario, le fichier est /user/ychen/output_data/mapreduce/out/merged.

  6. Répétez les mêmes opérations afin de configurer le composant tFileOutputDelimited recevant le lien reject, mais configurez le répertoire, dans le champ Folder, à /user/ychen/output_data/mapreduce/reject et laissez décochée la case Merge result to single file.

  7. Dans la vue Run, cliquez sur l'onglet Hadoop configuration afin de vérifier que la métadonnée de connexion à Hadoop a bien été importée depuis le Repository.

    Vous devez toujours utiliser cet onglet Hadoop Configuration pour définir la connexion à une distribution Hadoop donnée pour le Job MapReduce complet. Cette connexion est effective sur le Job uniquement.

  8. Appuyez sur F6 pour exécuter le Job.

    La vue Run est automatiquement ouverte dans la partie inférieure du Studio et affiche l'avancement de l'exécution de ce Job.

    Le Job lui-même affiche graphiquement la progression.

Cela fait, vous pouvez vérifier, par exemple dans la console Web de votre système HDFS, que la sortie a bien été écrite dans HDFS.

Un fichier fusionné a été créé.