Guide de maîtrise des dimensions de Hadoop

HadoopHadoopBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans un monde où les frontières entre les dimensions se brouillent, une faille s'est ouverte dans la trame de la réalité, laissant passer un être d'ailleurs. Cette entité, connue sous le nom de Harbinger Cristallin, est une créature sensible composée d'énergie pure, sa forme changeant et scintillant comme un kaleidoscope de lumière.

Le but du Harbinger Cristallin est de maîtriser la puissance des données pour refondre la trame même de l'existence. Pour y parvenir, il cherche à maîtriser les subtilités de Hadoop, un puissant cadre de traitement de gros volumes de données. Cependant, la compréhension du Harbinger de Hadoop est incomplète, et il a besoin de conseils pour débloquer tout le potentiel de la clause "having" dans Hive, un composant de stockage de données de Hadoop.

Votre mission, si vous la choisissez d'accepter, est de guider le Harbinger Cristallin à travers une série d'étapes, révélant les secrets de la clause "having" et lui permettant de manier la puissance des données de manière jamais imaginée auparavant.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/where("where Usage") hadoop/HadoopHiveGroup -.-> hadoop/group_by("group by Usage") hadoop/HadoopHiveGroup -.-> hadoop/having("having Usage") hadoop/HadoopHiveGroup -.-> hadoop/aggregating("Aggregating Function") subgraph Lab Skills hadoop/where -.-> lab-288976{{"Guide de maîtrise des dimensions de Hadoop"}} hadoop/group_by -.-> lab-288976{{"Guide de maîtrise des dimensions de Hadoop"}} hadoop/having -.-> lab-288976{{"Guide de maîtrise des dimensions de Hadoop"}} hadoop/aggregating -.-> lab-288976{{"Guide de maîtrise des dimensions de Hadoop"}} end

Comprendre le but de la clause "having"

Dans cette étape, nous allons explorer le but fondamental de la clause "having" dans Hive et la manière dont elle est liée au filtrage et à l'agrégation des données.

La clause "having" dans Hive est utilisée en conjonction avec la clause "group by" pour filtrer des groupes de données sur la base d'une condition spécifiée. Elle vous permet d'appliquer un filtre après que les données ont été regroupées et agrégées, vous permettant ainsi de filtrer des groupes entiers qui ne répondent pas aux critères spécifiés.

Voici un exemple qui illustre l'utilisation de la clause "having":

Tout d'abord, assurez-vous d'être connecté en tant qu'utilisateur hadoop en exécutant la commande suivante dans le terminal:

su - hadoop

Ensuite, lancez le shell Hive en exécutant la commande suivante:

hive

Maintenant, créez une table d'échantillonnage:

CREATE TABLE sales (
  product STRING,
  category STRING,
  sales_amount FLOAT
);

Insérez quelques données d'échantillonnage:

INSERT INTO sales VALUES
  ('Product A', 'Electronique', 1000.0),
  ('Product B', 'Electronique', 2000.0),
  ('Product C', 'Vêtements', 500.0),
  ('Product D', 'Vêtements', 1500.0),
  ('Product E', 'Electronique', 3000.0);

Enfin, calculez les ventes totales par catégorie et filtrez les catégories dont les ventes totales sont supérieures à 3000:

CREATE TABLE result_1
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category
HAVING SUM(sales_amount) > 3000;

SELECT * FROM result_1;

Dans cet exemple, nous créons tout d'abord une table appelée sales avec des colonnes pour product, category et sales_amount. Nous insérons ensuite quelques données d'échantillonnage dans la table.

Ensuite, nous utilisons la clause "group by" pour regrouper les données par category, et la fonction SUM pour calculer les ventes totales pour chaque catégorie. La clause "having" est ensuite utilisée pour filtrer les catégories où le total_sales est inférieur ou égal à 3000.

La sortie de cette requête ne contiendra que la catégorie "Electronique" car ses ventes totales (2000,0 + 1000,0 + 3000,0 = 6000,0) dépassent 3000, tandis que la catégorie "Vêtements" sera exclue car ses ventes totales (500,0 + 1500,0 = 2000,0) ne répondent pas à la condition spécifiée dans la clause "having".

Filtrer des groupes sur la base de plusieurs conditions

Alors que l'étape précédente a démontré l'utilisation de base de la clause "having", Hive vous permet également de filtrer des groupes sur la base de plusieurs conditions en utilisant des opérateurs logiques tels que AND et OR.

Voici un exemple qui montre comment utiliser plusieurs conditions dans la clause "having":

Calculez les ventes totales par produit et catégorie, et filtrez les produits dont les ventes totales sont supérieures à 2000 et qui appartiennent à la catégorie 'Electronique':

CREATE TABLE result_2
AS
SELECT product, category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product, category
HAVING SUM(sales_amount) > 2000 AND category = 'Electronique';

SELECT * FROM result_2;

Dans cet exemple, nous regroupons les données par product et category, et calculons les ventes totales pour chaque combinaison de product et category. La clause "having" est ensuite utilisée pour filtrer les groupes où le total_sales est inférieur ou égal à 2000, et la category n'est pas "Electronique".

La sortie de cette requête ne contiendra que les produits appartenant à la catégorie "Electronique" avec des ventes totales supérieures à 2000, tels que "Product B" et "Product E".

Vous pouvez également utiliser l'opérateur OR pour combiner plusieurs conditions dans la clause "having":

Calculez les ventes totales par produit et catégorie, et filtrez les produits dont les ventes totales sont supérieures à 2000 ou qui appartiennent à la catégorie 'Vêtements':

SELECT product, category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY product, category
HAVING SUM(sales_amount) > 2000 OR category = 'Vêtements';

Cette requête inclura tous les produits avec des ventes totales supérieures à 2000, quelle que soit leur catégorie, ainsi que tous les produits appartenant à la catégorie "Vêtements", quelle que soit leur chiffre d'affaires total.

Utiliser des fonctions d'agrégation dans la clause "having"

La clause "having" peut également être utilisée en conjonction avec des fonctions d'agrégation telles que COUNT, MAX, MIN et AVG. Cela vous permet de filtrer des groupes sur la base de conditions impliquant ces fonctions d'agrégation.

Voici un exemple qui montre l'utilisation de la fonction COUNT dans la clause "having":

Calculez le nombre de produits dans chaque catégorie, et filtrez les catégories ayant plus de 2 produits:

CREATE TABLE result_3
AS
SELECT category, COUNT(product) AS product_count
FROM sales
GROUP BY category
HAVING COUNT(product) > 2;

SELECT * FROM result_3;

Dans cet exemple, nous utilisons la fonction COUNT pour compter le nombre de produits dans chaque category. La clause "having" est ensuite utilisée pour filtrer les catégories où le product_count est inférieur ou égal à 2.

La sortie de cette requête ne contiendra que les catégories qui ont plus de 2 produits associés.

Vous pouvez également combiner des fonctions d'agrégation avec d'autres conditions dans la clause "having":

Calculez le montant de ventes maximum pour chaque catégorie, et filtrez les catégories ayant un montant de ventes maximum supérieur à 2000 et plus de 2 produits:

SELECT category, MAX(sales_amount) AS max_sales, COUNT(product) AS product_count
FROM sales
GROUP BY category
HAVING MAX(sales_amount) > 2000 AND COUNT(product) > 2;

Cette requête calcule le montant de ventes maximum (max_sales) et le nombre de produits (product_count) pour chaque catégorie. La clause "having" filtre les catégories où le max_sales est inférieur ou égal à 2000, ou le product_count est inférieur ou égal à 2.

Combiner les clauses "where" et "having"

Les clauses "where" et "having" ont des rôles différents dans les requêtes Hive. La clause "where" est utilisée pour filtrer les lignes individuelles avant que les données ne soient regroupées et agrégées, tandis que la clause "having" est utilisée pour filtrer des groupes de données après que les données ont été regroupées et agrégées.

Dans certains cas, vous devrez peut-être combiner les deux clauses dans une seule requête pour obtenir le comportement de filtrage souhaité. Voici un exemple qui montre comment combiner les clauses "where" et "having":

Calculez les ventes totales par catégorie, filtrez les produits dont le montant des ventes est supérieur à 1000, et filtrez les catégories dont les ventes totales sont supérieures à 3000:

CREATE TABLE result_4
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
WHERE sales_amount > 1000
GROUP BY category
HAVING SUM(sales_amount) > 3000;

SELECT * FROM result_4;

Dans cet exemple, nous utilisons tout d'abord la clause "where" pour filtrer les lignes individuelles où le sales_amount est inférieur ou égal à 1000. Cela signifie que seuls les produits dont le montant des ventes est supérieur à 1000 seront considérés pour le regroupement et l'agrégation subséquents.

Ensuite, nous regroupons les données filtrées par category et calculons les ventes totales pour chaque catégorie en utilisant la fonction SUM. Enfin, la clause "having" est utilisée pour filtrer les catégories où le total_sales est inférieur ou égal à 3000.

La sortie de cette requête ne contiendra que les catégories dont les ventes totales sont supérieures à 3000, calculées à partir de produits dont le montant des ventes est supérieur à 1000.

Sommaire

Dans ce laboratoire, nous avons entrepris le chemin de guider le Harbinger Cristallin à travers les complexités de la clause "having" dans Hive. En maîtrisant cette fonction puissante, le Harbinger peut désormais filtrer et analyser les données avec une précision inégalée, dévoilant les secrets des immenses trésors de données du multivers.

Au cours d'une série d'étapes, nous avons exploré le but fondamental de la clause "having", démontrant sa capacité à filtrer des groupes de données sur la base de conditions spécifiées. Nous sommes ensuite allés plus loin, apprenant à appliquer plusieurs conditions à l'aide d'opérateurs logiques, à exploiter les fonctions d'agrégation dans la clause "having" et à combiner les clauses "where" et "having" pour des scénarios de filtrage de données complexes.

Au cours de tout ce laboratoire, le Harbinger Cristallin a acquis des connaissances et des compétences précieuses, lui donnant le pouvoir de maîtriser le potentiel réel de Hadoop et de remodeller la trame de l'existence grâce au pouvoir de l'analyse de données. A chaque étape, nous avons découvert de nouvelles possibilités, permettant au Harbinger de naviguer dans les vastes domaines de données avec une précision et un contrôle inégalés.