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

Hive fournit un langage de requête de type SQL à des fins ETL en plus de Hadoop système de fichiers.

Le langage Hive Query (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 différents types de clauses associées à Hive pour effectuer différents types de manipulations de données et d'interrogations. 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
  • Joint pour fusionner différentes tables de données
  • Scripts personnalisés spécifiques à l'utilisateur pour faciliter le code
  • Outil d'interrogation plus rapide au-dessus de Hadoop

Création d'une table dans la ruche

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

Ici, dans ce tutoriel, nous allons créer un tableau « employes_guru » avec 6 colonnes.

Création d'une table dans la ruche

D'après la capture d'écran ci-dessus,

  1. Nous créons la table "employees_guru" avec 6 valeurs de colonnes telles que Id, Nom, Âge, Adresse, Salaire, Département, qui appartiennent aux employés présents dans l'organisation "guru".
  2. Ici, dans cette étape, nous chargeons les données dans la table employes_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 dans SQL la langue.

Order by est la clause que nous utilisons avec l'instruction « SELECT » dans Requêtes de ruche, qui aide à trier les données. La clause Order by utilise les colonnes des tables Hive pour trier les valeurs de colonnes particulières mentionnées avec Order by. Quel que soit le nom de la colonne dans laquelle nous définissons la clause order by, la requête sélectionnera et affichera les résultats par ordre croissant ou décroissant des valeurs de colonne particulières.

Si le champ order by mentionné est une chaîne, alors il affichera le résultat dans l'ordre lexicographique. En aval, il doit être transmis à un seul réducteur.

Trier par requête

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

  1. Il s'agit de la requête exécutée sur la table « employees_guru » avec la clause ORDER BY avec Department comme défini dans le nom de colonne ORDER BY. » Department » est une chaîne, elle affichera donc les résultats en fonction de l'ordre lexicographique.
  2. Il s'agit du résultat réel 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. afin que la requête soit exécutée.

Requete :

SELECT * FROM employees_guru ORDER BY Department;

Regrouper par requête

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

Par exemple, dans la capture d'écran ci-dessous, le nombre total d'employés présents dans chaque service sera affiché. Ici, nous avons « Département » comme groupe par valeur.

Regrouper par requête

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

  1. Il s'agit de 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. Le résultat affiché ici est le nom du département et les employés sont répartis dans différents départements. Ici, tous les employés appartenant à un 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.

requête:

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

Trier par

La clause Sort by s'exécute sur les noms de colonnes des tables Hive pour trier la sortie. On peut citer DESC pour trier l'ordre par ordre décroissant et mentionner ASC pour Ordre Ascendant du tri.

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

Par exemple, si les types de colonnes sont numériques, le tri sera effectué par ordre numérique. Si les types de colonnes sont des chaînes, le tri sera effectué par ordre lexicographique.

Trier par

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

  1. Il s'agit de la requête exécutée sur la table « employees_guru » avec la clause SORT BY avec « id » comme définissant le nom de la colonne SORT BY. Nous avons utilisé le mot clé DESC.
  2. Ainsi, la sortie affichée sera par ordre décroissant de « id ».

requête:

SELECT * from employees_guru SORT BY Id DESC;

Cluster By

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

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

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

Par exemple, Cluster Clause By mentionnée dans le nom de la colonne Id de la table employes_guru. La sortie lors de l’exécution de cette requête donnera des résultats à plusieurs réducteurs en back-end. Mais en tant que frontal, il s'agit d'une clause alternative à la fois pour Sort By et Distribute By.

Il s'agit en fait d'un processus back-end lorsque nous effectuons une requête avec tri par, groupe par et cluster par en termes de framework Map Reduce. Donc, si nous voulons stocker les résultats dans plusieurs réducteurs, nous allons avec Cluster Par.

Cluster By

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'identification.
  2. Il affiche l'ID et les noms présents dans le tri guru_employees classés par

requête:

SELECT  Id, Name from employees_guru CLUSTER BY Id;

Distribuer par

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

  • Il garantit que chacun des N réducteurs obtient des plages de colonnes qui ne se chevauchent pas.
  • Il ne trie pas la sortie de chaque réducteur

Distribuer par

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

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

requête:

SELECT  Id, Name from employees_guru DISTRIBUTE BY Id;