Requêtes Hive: Trier par, Regrouper par, Distribuer par, Cluster par exemples

Table des matières:

Anonim

Hive fournit un langage de requête de type SQL à des fins ETL au-dessus du système de fichiers Hadoop.

Le langage de requête Hive (HiveQL) fournit un environnement de type SQL dans Hive pour travailler avec des tables, des bases de données et des requêtes.

Nous pouvons avoir un type de clauses différent associé à Hive pour effectuer différents types de manipulation de données et d'interrogation. Pour une meilleure connectivité avec différents nœuds en dehors de l'environnement. HIVE fournit également une connectivité JDBC.

Les requêtes Hive offrent les fonctionnalités suivantes:

  • Modélisation de données telle que création de bases de données, de tables, etc.
  • Fonctionnalités ETL telles que l'extraction, la transformation et le chargement de données dans des tables
  • Jointures pour fusionner différentes tables de données
  • Scripts personnalisés spécifiques à l'utilisateur pour faciliter le code
  • Outil d'interrogation plus rapide sur Hadoop

Dans cet article, vous apprendrez-

  • Trier par requête
  • Regrouper par requête
  • Trier par
  • Cluster par
  • Distribuer par

Créer une table dans Hive

Avant de commencer avec notre sujet principal pour ce didacticiel, nous allons d'abord créer un tableau pour l'utiliser comme référence pour le didacticiel suivant.

Ici dans ce tutoriel, nous allons créer la table "employee_guru" avec 6 colonnes.

À partir de la capture d'écran ci-dessus,

  1. Nous créons la table "Employees_guru" avec 6 valeurs de colonne telles que Id, Nom, Âge, Adresse, Salaire, Département, qui appartient aux employés présents dans l'organisation "guru".
  2. Ici, dans cette étape, nous chargeons les données dans la table Employees_guru. Les données que nous allons charger seront placées sous le fichier Employees.txt

Trier par requête:

La syntaxe ORDER BY dans HiveQL est similaire à la syntaxe ORDER BY en langage SQL.

Trier par est la clause que nous utilisons avec l'instruction "SELECT" dans les requêtes Hive, qui permet de trier les données. La clause Trier par utilise des colonnes sur les tables Hive pour trier les valeurs de colonne particulières mentionnées avec Trier par. Quel que soit le nom de la colonne que nous définissons l'ordre par clause, la requête sélectionne et affiche les résultats par ordre croissant ou décroissant des valeurs de colonne particulières.

Si l'ordre par champ mentionné est une chaîne, alors il affichera le résultat dans l'ordre lexicographique. À l'arrière, il doit être transmis à un seul réducteur.

À partir de la capture d'écran ci-dessus, nous pouvons observer ce qui suit

  1. C'est la requête qui s'exécute sur la table "Employees_guru" avec la clause ORDER BY avec Department comme nom de colonne ORDER BY défini.

    "Department" est une chaîne, il affichera donc les résultats en fonction de l'ordre lexicographique.

  2. Il s'agit de la sortie réelle de la requête. Si nous l'observons correctement, nous pouvons voir qu'il obtient des résultats affichés en fonction de la colonne Département telle que ADMIN, Finance, etc.

Mettre en doute :

SELECT * FROM employees_guru ORDER BY Department;

Regrouper par requête:

La clause Group by utilise des colonnes sur les tables Hive pour regrouper des valeurs de colonne particulières mentionnées avec le group by. Quel que soit le nom de la colonne que nous définissons une clause «groupby», la requête sélectionne et affiche les résultats en regroupant les valeurs de colonne particulières.

Par exemple, dans la capture d'écran ci-dessous, il affichera le nombre total d'employés présents dans chaque département. Ici, nous avons "Département" comme groupe par valeur.

À partir de la capture d'écran ci-dessus, nous observerons ce qui suit

  1. C'est la requête qui est effectuée sur la table "Employees_guru" avec la clause GROUP BY avec Department comme nom de colonne GROUP BY défini.
  2. La sortie affichée ici est le nom du département et les employés comptent dans différents départements. Ici, tous les employés appartenant au service spécifique sont regroupés et affichés dans les résultats. Le résultat est donc le nom du département avec le nombre total d'employés présents dans chaque département.

Mettre en doute:

SELECT Department, count(*) FROM employees_guru GROUP BY Department;

Trier par:

La clause Trier par fonctionne sur les noms de colonne des tables Hive pour trier la sortie. On peut mentionner DESC pour trier l'ordre par ordre décroissant et mentionner ASC pour l'ordre croissant du tri.

Dans ce tri, il triera les lignes avant d'alimenter le réducteur. Le tri dépend toujours des types de colonnes.

Par exemple, si les types de colonnes sont numériques, il triera dans l'ordre numérique si les types de colonnes sont des chaînes, il triera dans l'ordre lexicographique.

À partir de la capture d'écran ci-dessus, nous pouvons observer ce qui suit:

  1. C'est la requête qui s'exécute sur la table "Employees_guru" avec la clause SORT BY avec "id" comme définir le nom de la colonne SORT BY. Nous avons utilisé le mot-clé DESC.
  2. Ainsi, la sortie affichée sera dans l'ordre décroissant de "id".

Mettre en doute:

SELECT * from employees_guru SORT BY Id DESC;

Cluster par:

Cluster By utilisé comme alternative pour les clauses Distribute BY et Sort BY dans Hive-QL.

Cluster BY clause utilisée sur les tables présentes dans Hive. Hive utilise les colonnes de Cluster by pour répartir les lignes entre les réducteurs. Les colonnes Cluster BY iront aux multiples réducteurs.

  • Il assure le tri des ordres de valeurs présentes dans plusieurs réducteurs

Par exemple, la clause Cluster By mentionnée dans le nom de la colonne Id de la table employee_guru table. La sortie lors de l'exécution de cette requête donnera des résultats à plusieurs réducteurs en arrière-plan. Mais en tant que frontal, il s'agit d'une clause alternative pour Trier par et Distribuer par.

Il s'agit en fait d'un processus d'arrière-plan lorsque nous exécutons une requête avec tri, grouper et cluster by en termes de structure de réduction de carte. Donc, si nous voulons stocker les résultats dans plusieurs réducteurs, nous utilisons Cluster By.

À partir de la capture d'écran ci-dessus, nous obtenons les observations suivantes:

  1. C'est la requête qui exécute la clause CLUSTER BY sur la valeur du champ Id. Ici, il va obtenir un tri sur les valeurs d'identifiant.
  2. Il affiche l'ID et les noms présents dans le tri guru_employees triés par

Mettre en doute:

SELECT Id, Name from employees_guru CLUSTER BY Id;

Distribuer par:

Distribuer la clause BY utilisée sur les tables présentes dans Hive. Hive utilise les colonnes de Distribuer par pour répartir les lignes entre les réducteurs. Toutes les colonnes Distribute BY iront dans le même réducteur.

  • Il garantit que chacun des N réducteurs obtient des plages de colonnes non chevauchantes
  • Il ne trie pas la sortie de chaque réducteur

À partir de la capture d'écran ci-dessus, nous pouvons observer ce qui suit

  1. DISTRIBUTE BY Clause exécutée sur l'ID de la table "empoloyees_guru"
  2. Sortie montrant l'ID, le nom. Au back-end, il ira au même réducteur

Mettre en doute:

SELECT Id, Name from employees_guru DISTRIBUTE BY Id;