Scénario : Effectuer une jointure sur les colonnes d'une table et les écrire dans Hive - 6.1

Composants Talend Guide de référence

EnrichVersion
6.1
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
Talend Real-Time Big Data Platform
task
Création et développement
Gouvernance de données
Qualité et préparation de données
EnrichPlatform
Studio Talend

Ce scénario utilise un Job comprenant quatre composants afin d'effectuer une jointure sur les colonnes sélectionnées de deux tables Hive et de les écrire dans une autre table Hive.

Préparer les tables Hive

  1. Créez la table Hive dans laquelle vous souhaitez écrire des données. Dans ce scénario, cette table est nommée agg_result et vous pouvez la créer à l'aide de l'instruction suivante dans le tHiveRow :

    create table agg_result (id int, name string, address string, sum1 string, postal string, state string, capital string, mostpopulouscity string) partitioned by (type string) row format delimited fields terminated by ';' location '/user/ychen/hive/table/agg_result'

    Dans cette instruction, '/user/ychen/hive/table/agg_result' est le répertoire utilisé pour stocker la table créée dans HDFS. Vous devez le remplacer par le répertoire à utiliser dans votre environnement.

    Pour plus d'informations concernant le tHiveRow, consultez tHiveRow.

  2. Créez deux tables d'entrée Hive contenant les colonnes sur lesquelles vous souhaitez effectuer une jointure et que vous souhaitez agréger dans la table Hive de sortie, agg_result. Les instructions à utiliser sont :

    create table customer (id int, name string, address string, idState int, id2 int, regTime string, registerTime string, sum1 string, sum2 string) row format delimited fields terminated by ';' location '/user/ychen/hive/table/customer'

    et

    create table state_city (id int, postal string, state string, capital int, mostpopulouscity string) row format delimited fields terminated by ';' location '/user/ychen/hive/table/state_city'
  3. Utilisez le tHiveRow pour charger les données dans les deux tables d'entrée, customer et state_city. Les instructions à utiliser sont :

    "LOAD DATA LOCAL INPATH 'C:/tmp/customer.csv' OVERWRITE INTO TABLE customer"

    et

    "LOAD DATA LOCAL INPATH 'C:/tmp/State_City.csv' OVERWRITE INTO TABLE state_city"

    Les deux fichiers, customer.csv et State_City.csv, sont deux fichiers locaux créés pour ce scénario. Vous devez créer vos fichiers afin de fournir les données aux tables Hive d'entrée. Le schéma des données de chaque fichier doit être identique à la table correspondante.

    Vous pouvez utiliser le tRowGenerator et le tFileOutputDelimited pour créer facilement les deux fichiers. Pour plus d'informations concernant ces composants, consultez tRowGenerator et tFileOutputDelimited.

    Pour plus d'informations concernant le langage de requêtes Hive, consultez https://cwiki.apache.org/confluence/display/Hive/LanguageManual (en anglais).

Lier les composants

  1. Dans la perspective Integration du Studio Talend, créez un Job vide depuis le nœud Job Designs dans la vue Repository.

    Pour plus d'informations concernant la création d'un Job, consultez le Guide utilisateur du Studio Talend.

  2. Déposez deux composants tELTHiveInput, un tELTHiveMap et un tELTHiveOutput dans l'espace de modélisation graphique.

  3. Reliez les composants à l'aide de liens Row > Main.

    A chaque connexion de deux composants, un assistant s'ouvre et vous demande de nommez le lien que vous créez. Ce nom doit être le même que celui de la table Hive à traiter par le composant actif. Dans ce scénario, les tables d'entrée gérées par les deux composants tELTHiveInput sont customer et state_city et la table de sortie traitée par le tELTHiveOutput est agg_result.

Configurer les schémas d'entrée

  1. Double-cliquez sur le composant tELTHiveInput utilisant le lien customer afin d'ouvrir sa vue Component.

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

  3. Cliquez sur le bouton autant de fois que nécessaire pour créer des colonnes. Renommez-les de la même manière que dans le schéma de la table customer précédemment créée dans Hive.

    Pour configurer ce schéma, vous pouvez également utiliser le schéma customer récupéré et stocké dans le Repository. Pour plus d'informations concernant la configuration d'une connexion à Hive et la récupération d'un schéma du Repository, consultez le Guide utilisateur du Studio Talend.

  4. Dans le champ Default table name, saisissez le nom de la table d'entrée, customer, à traiter par ce composant.

  5. Double-cliquez sur le second tELTHiveInput utilisant le lien state_city pour ouvrir sa vue Component.

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

  7. Cliquez sur le autant de fois que nécessaire pour ajouter des colonnes. Renommez-les de la même manière que dans le schéma de la table state_city précédemment créée dans Hive.

  8. Dans le champ Default table name, saisissez le nom de la table d'entrée, state_city, à traiter par ce composant.

Mapper les schémas d'entrée et de sortie

Configurer la connexion à Hive

  1. Cliquez sur le composant tELTHiveMap, puis cliquez sur l'onglet Component pour ouvrir la vue correspondante.

  2. Dans la zone Version, sélectionnez la distribution d'Hadoop que vous utilisez, ainsi que la version de Hive.

  3. Dans la liste Connection mode, sélectionnez le mode de connexion à utiliser. Si votre distribution est HortonWorks, ce mode est Embedded uniquement.

  4. Dans les champs Host et Port, saisissez les informations d'authentification pour que le composant se connecte à Hive. Dans cet exemple, l'hôte est talend-hdp-all et le port est 9083.

  5. Cochez la case Set Jobtracker URI et saisissez l'emplacement du Jobtracker. Par exemple, talend-hdp-all:50300.

  6. Cochez la case Set NameNode URI et saisissez l'emplacement du NameNode. Par exemple, hdfs://talend-hdp-all:8020.

Mapper les schémas

  1. Cliquez sur le bouton ELT Hive Map Editor afin de mapper les schémas

  2. Du côté de l'entrée (à gauche), cliquez sur le bouton Add alias pour ajouter la table à utiliser.

  3. Dans la fenêtre qui s'ouvre, sélectionnez la table customer, puis cliquez sur OK.

  4. Répétez l'opération pour sélectionner la table state_city.

  5. Glissez-déposez la colonne idstate de la table customer dans la colonne id de la table state_city. Une jointure Inner Join est automatiquement créée.

  6. Du côté de la sortie (à droite), la table agg_result est vide. Cliquez sur le bouton , en bas, pour ajouter autant de colonnes que nécessaire. Nommez-les de la même façon que dans le schéma de la table agg_result précédemment créée dans Hive.

    Note

    La colonne type est la colonne partitionnée de la table agg_result et ne doit pas être dupliquée dans ce schéma. Pour plus d'informations concernant la partition de colonnes dans des tables Hive, consultez le manuel de Hive.

  7. De la table customer, glissez-déposez les colonnes id, name, address et sum1 dans les colonnes correspondantes de la table agg_result.

  8. De la table state_city, glissez-déposez les colonnes postal, state, capital et mostpopulouscity dans les colonnes correspondantes de la table agg_result.

  9. Cliquez sur OK pour valider ces modifications.

Configurer le schéma de sortie

  1. Double-cliquez sur le composant tELTHiveOutput pour ouvrir sa vue Component.

  2. Si le schéma de ce composant est différent de celui du composant précédent, une icône d'avertissement apparaît. Dans ce cas, cliquez sur le bouton Sync columns afin de récupérer le schéma du composant précédent. L'icône disparaît.

  3. Dans le champ Default table name, saisissez le nom de la table de sortie dans laquelle vous souhaitez écrire les données. Dans ce scénario, la table est agg_result.

  4. Sous la table Field partition, cliquez sur le bouton pour ajouter une ligne. Cela vous permet d'écrire des données dans la colonne de partition de la table agg_result.

    Cette colonne de partition a été définie lors de la création de la table agg_result à l'aide de partitioned by (type string), dans l'instruction Create précédemment présentée. Cette colonne de partition est type, elle décrit le type des clients.

  5. Dans la colonne Partition column, saisissez type sans guillemet. Dans la colonne Partition value, saisissez prospective entre guillemets simples.

Exécuter le Job

  • Appuyez sur F6 pour exécuter le Job.

Vérifiez la table agg_result dans Hive, en utilisant, par exemple,

select * from agg_result;

Cette capture d'écran ne montre qu'une partie de la table. Vous pouvez constater que les colonnes d'entrée sélectionnées sont agrégées et écrites dans la table agg_result. La colonne de partition est remplie avec la valeur prospective.