Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne

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 le monde des données massives, Hadoop est apparu comme un cadre (framework) puissant pour le traitement et le stockage distribués des données. Dans l'écosystème Hadoop, Hive est devenu un outil populaire pour les analystes et les développeurs de données qui travaillent avec des données structurées. Ce tutoriel vous guidera tout au long du processus de filtrage des enregistrements d'une table Hive en fonction d'une valeur de colonne spécifique, mettant en évidence le potentiel de la manipulation de données basée sur Hadoop.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hadoop(("Hadoop")) -.-> hadoop/HadoopHiveGroup(["Hadoop Hive"]) hadoop/HadoopHiveGroup -.-> hadoop/where("where Usage") hadoop/HadoopHiveGroup -.-> hadoop/limit("limit Usage") hadoop/HadoopHiveGroup -.-> hadoop/group_by("group by Usage") hadoop/HadoopHiveGroup -.-> hadoop/having("having Usage") hadoop/HadoopHiveGroup -.-> hadoop/join("join Usage") hadoop/HadoopHiveGroup -.-> hadoop/sort_by("sort by Usage") hadoop/HadoopHiveGroup -.-> hadoop/distribute_by("distribute by Usage") subgraph Lab Skills hadoop/where -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} hadoop/limit -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} hadoop/group_by -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} hadoop/having -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} hadoop/join -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} hadoop/sort_by -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} hadoop/distribute_by -.-> lab-415638{{"Comment filtrer les enregistrements d'une table Hive en fonction d'une valeur de colonne"}} end

Comprendre le filtrage des tables Hive

Hive est un outil de gestion de entrepôts de données (data warehousing) construit sur Hadoop, qui offre une interface similaire au SQL pour interroger et gérer de grands ensembles de données stockés dans un système de fichiers distribué. L'une des fonctionnalités clés de Hive est la capacité de filtrer les données en fonction de valeurs de colonnes spécifiques, permettant aux utilisateurs d'extraire des informations pertinentes de leurs données.

Dans le contexte de Hive, le filtrage de table est le processus de sélection d'un sous - ensemble de lignes d'une table en fonction d'une ou plusieurs conditions. Il s'agit d'une opération cruciale dans l'analyse et le traitement des données, car elle permet aux utilisateurs de se concentrer sur les données spécifiques dont ils ont besoin, réduisant ainsi la quantité de données à traiter et améliorant l'efficacité globale de leurs flux de travail.

Structure d'une table Hive

Avant de plonger dans les détails du filtrage de table, il est important de comprendre la structure d'une table Hive. Une table Hive est composée de lignes et de colonnes, similairement à une table de base de données relationnelle traditionnelle. Chaque ligne représente un enregistrement, et chaque colonne représente un attribut ou un champ spécifique au sein de cet enregistrement.

graph TD A[Hive Table] --> B[Rows] B --> C[Columns]

Types de données Hive

Hive prend en charge une variété de types de données, y compris les types primitifs (par exemple, INT, STRING, BOOLEAN) et les types complexes (par exemple, ARRAY, MAP, STRUCT). Ces types de données jouent un rôle crucial dans la définition de la structure de vos tables Hive et des types d'opérations que vous pouvez effectuer sur les données, y compris le filtrage.

Syntaxe des requêtes Hive

Hive utilise un langage similaire au SQL appelé HiveQL (Hive Query Language) pour interroger et manipuler les données. La syntaxe de base pour filtrer une table Hive en fonction d'une valeur de colonne est la suivante :

SELECT column1, column2,...
FROM table_name
WHERE condition;

La clause WHERE dans la requête est là où vous spécifiez les conditions de filtrage en fonction des valeurs de colonne.

Filtrer une table Hive par valeur de colonne

Le cas d'utilisation le plus courant pour filtrer des tables Hive consiste à sélectionner des lignes en fonction des valeurs d'une ou plusieurs colonnes. Cela peut être réalisé en utilisant la clause WHERE dans une requête SQL Hive.

Filtrage de base

La syntaxe de base pour filtrer une table Hive par une valeur de colonne est la suivante :

SELECT column1, column2,...
FROM table_name
WHERE column_name = 'value';

Voici un exemple :

SELECT *
FROM employees
WHERE department = 'Sales';

Cette requête retournera toutes les lignes de la table employees où la colonne department a pour valeur 'Sales'.

Filtrage composé

Vous pouvez également combiner plusieurs conditions en utilisant des opérateurs logiques tels que AND, OR et NOT dans la clause WHERE :

SELECT column1, column2,...
FROM table_name
WHERE condition1 AND condition2;

SELECT column1, column2,...
FROM table_name
WHERE condition1 OR condition2;

SELECT column1, column2,...
FROM table_name
WHERE NOT condition;

Exemple :

SELECT *
FROM employees
WHERE department = 'Sales' AND salary > 50000;

Cette requête retournera toutes les lignes de la table employees où le department est 'Sales' et le salary est supérieur à 50000.

Filtrage avec des valeurs NULL

La gestion des valeurs NULL dans la clause WHERE nécessite une attention particulière. Pour vérifier les valeurs NULL, vous pouvez utiliser la syntaxe IS NULL ou IS NOT NULL :

SELECT column1, column2,...
FROM table_name
WHERE column_name IS NULL;

SELECT column1, column2,...
FROM table_name
WHERE column_name IS NOT NULL;

Exemple :

SELECT *
FROM employees
WHERE commission IS NOT NULL;

Cette requête retournera toutes les lignes de la table employees où la colonne commission n'est pas NULL.

Filtrage avec des conditions de plage

Vous pouvez également filtrer les données en fonction d'une plage de valeurs en utilisant la clause BETWEEN :

SELECT column1, column2,...
FROM table_name
WHERE column_name BETWEEN value1 AND value2;

Exemple :

SELECT *
FROM employees
WHERE salary BETWEEN 50000 AND 100000;

Cette requête retournera toutes les lignes de la table employees où le salary est compris entre 50000 et 100000.

Techniques avancées de filtrage dans Hive

Bien que les techniques de filtrage de base couvertes dans la section précédente soient utiles, Hive propose également des capacités de filtrage plus avancées pour gérer des scénarios de données complexes.

Filtrage avec des expressions régulières

Hive prend en charge l'utilisation d'expressions régulières dans la clause WHERE pour effectuer des correspondances de motifs plus avancées sur les valeurs de colonne. Les opérateurs REGEXP et RLIKE peuvent être utilisés à cet effet.

Exemple :

SELECT *
FROM employees
WHERE name RLIKE '^J.*';

Cette requête retournera toutes les lignes de la table employees où la colonne name commence par la lettre 'J'.

Filtrage avec IN et NOT IN

Les opérateurs IN et NOT IN vous permettent de filtrer les lignes en fonction d'une liste de valeurs :

SELECT column1, column2,...
FROM table_name
WHERE column_name IN (value1, value2,...);

SELECT column1, column2,...
FROM table_name
WHERE column_name NOT IN (value1, value2,...);

Exemple :

SELECT *
FROM employees
WHERE department IN ('Sales', 'Marketing');

Cette requête retournera toutes les lignes de la table employees où la colonne department est soit 'Sales' soit 'Marketing'.

Filtrage avec des sous - requêtes

Hive prend également en charge l'utilisation de sous - requêtes dans la clause WHERE, vous permettant de filtrer les données en fonction des résultats d'une autre requête.

Exemple :

SELECT *
FROM employees
WHERE salary > (
  SELECT AVG(salary)
  FROM employees
);

Cette requête retournera toutes les lignes de la table employees où le salary est supérieur au salaire moyen de tous les employés.

Filtrage avec des tables partitionnées

Hive prend en charge les tables partitionnées, ce qui peut améliorer considérablement les performances des requêtes en réduisant la quantité de données à scanner. Lorsque vous travaillez avec des tables partitionnées, vous pouvez filtrer les données en fonction des colonnes de partition.

Exemple :

SELECT *
FROM sales_data
WHERE year = 2022 AND month = 6;

Cette requête ne scannera que les partitions pour l'année 2022 et le mois 6, plutôt que l'ensemble de la table sales_data.

En maîtrisant ces techniques de filtrage avancées, vous pouvez construire des requêtes Hive plus puissantes et plus efficaces pour extraire les données dont vous avez besoin de vos tables Hive.

Résumé

À la fin de ce tutoriel, vous aurez une bonne compréhension de la manière d'effectuer efficacement le filtrage des enregistrements d'une table Hive en fonction d'une valeur de colonne. Vous apprendrez diverses techniques, allant du filtrage de base aux approches plus avancées, vous permettant de travailler efficacement avec le traitement et l'analyse des données basées sur Hadoop. Cette connaissance sera inestimable lorsque vous explorererez le monde des données massives et utiliserez les capacités de l'écosystème Hadoop.