Rejoint Hive - Apprenez les types de jointures avec ses commandes et sorties

Table des matières:

Anonim

Introduction à Joins in Hive

Les jointures sont utilisées pour récupérer diverses sorties à l'aide de plusieurs tables, en les combinant en fonction de colonnes particulières. Maintenant, pour que les tables soient dans Hive, nous devons créer les tables et charger les données dans chaque table. Nous allons utiliser ici deux tableaux (client et produit) pour comprendre l'objectif.

Différentes commandes

Voici les commandes pour créer et charger les données dans ces tableaux:

Pour la table client : 6 lignes

Créer une commande

Créer une table externe s'il n'existe pas de client (chaîne d'ID, chaîne de nom, chaîne de ville)
format de ligne délimité
champs terminés par ''
emplacement '/user/hive/warehouse/test.db/customer'
tblproperties ("skip.header.line.count" = "1");

Commande de chargement

Charger les données locales dans le chemin '/home/cloudera/Customer_Neha.txt' dans la table client;

Données de table client

Pour le tableau des produits : 6 rangées

Créer une commande

Créer une table externe s'il n'existe pas de produit (chaîne Cust_Id,
Chaîne de produit, chaîne de prix)
format de ligne délimité
champs terminés par ''
emplacement '/user/hive/warehouse/test.db/product'
tblproperties ("skip.header.line.count" = "1");

Commande de chargement

Charger le chemin local de données '/home/cloudera/Product_Neha.txt' dans le produit de table;

Données du tableau des produits

Remarque : J'utilise «propriétés (« skip.header.line.count »=» 1 »)» pour ignorer la première ligne de mes données qui est l'en-tête pour moi.

Pour vérifier le schéma de la table, utilisez la commande "desc table name;"


Maintenant, nous avons des données dans des tableaux, jouons avec ????

Types de jointures dans Hive

Join- Cela donnera le produit croisé des données de la table en sortie. Comme vous pouvez le voir, nous avons 6 lignes dans chaque tableau. Ainsi, la sortie pour Join sera de 36 lignes. Le nombre de mappeurs-1. Cependant, aucune réduction à l'opérateur n'est utilisée.

Commander

Production:

1. Jointure complète

La jointure complète sans condition de correspondance donnera le produit croisé des deux tables.

Nombre de mappeurs-2

Nombre de réducteur-1

Ceci peut également être réalisé en utilisant «Join» mais avec moins de mappeur et de réducteur.

Jointure complète avec condition de correspondance

Toutes les lignes seront jointes à partir des deux tables. Si les lignes ne correspondent pas dans une autre table, NULL sera rempli en sortie (Observe Id-100, 106). Aucune ligne n'est ignorée.

Nombre de mappeurs-2

Nombre de réducteur-1

Commander

Production:

2. Jointure intérieure

Si la jointure interne est utilisée sans la clause «on», elle donnera le produit croisé en sortie. Cependant, nous devons utiliser les colonnes spécifiques sur lesquelles la jointure peut être effectuée. La colonne Id de la table customer et la colonne Cust_id de la table product sont mes colonnes spécifiques. La sortie contient les lignes où Id et Cust_Id correspondent. Vous pouvez observer que les lignes avec Id-106 et Cust_Id-100 sont ignorées en sortie car elles ne sont pas présentes dans une autre table.

Commander

Production:

3. Jointure gauche

Toutes les lignes du tableau de gauche sont jointes aux lignes correspondantes du tableau de droite. Si la table de droite a des lignes avec des identifiants qui ne sont pas présents dans la table de gauche, ces lignes seront ignorées (Observe Cust_Id-100 en sortie). Si la table de droite n'a pas de lignes avec des ID qui sont là dans la table de gauche, NULL sera rempli en sortie (Observe Id-106 en sortie).

Nombre de Mapper-1

Nombre de réducteur-0

Commander

Production:

4. Jointure droite

Toutes les lignes du tableau de droite correspondent aux lignes du tableau de gauche. Si le tableau de gauche n'a pas de ligne, alors NULL sera rempli (Observe Id 100). Les lignes de la table de gauche seront ignorées si cette correspondance n'est pas trouvée dans la table de droite (Observe Id 106).

Nombre de Mapper-1

Nombre de réducteur-0

Commander

Production:

Conclusion - se joint à Hive

«Join» comme le mot l'indique, peut joindre deux ou plusieurs tables dans la base de données. Il est similaire aux jointures dans SQL. Les jointures sont utilisées pour récupérer diverses sorties à l'aide de plusieurs tables, en les combinant en fonction de colonnes particulières. En fonction de l'exigence, il est possible de décider quelle jointure fonctionnera pour vous. Par exemple, si vous voulez vérifier quels sont les identifiants présents dans le tableau de gauche mais pas dans le tableau de droite, vous pouvez simplement utiliser la jointure gauche. Diverses optimisations peuvent être effectuées dans les jointures de ruche en fonction de la complexité. Certains des exemples sont les jointures de répartition, les jointures de réplication et les semi-jointures.

Articles recommandés

Ceci est un guide de Joins in Hive. Nous discutons ici des types de jointures comme la jointure complète, la jointure interne, la jointure gauche et la jointure droite dans la ruche ainsi que sa commande et sa sortie. Vous pouvez également consulter les articles suivants pour en savoir plus-

  1. Qu'est-ce qu'une ruche?
  2. Commandes Hive
  3. Formation sur la ruche (2 cours, 5+ projets)
  4. Apache Pig vs Apache Hive - 12 principales différences utiles
  5. Caractéristiques de Hive Alternatives
  6. Utilisation de la fonction ORDER BY dans Hive
  7. 6 principaux types de jointures dans MySQL avec des exemples