Gestion des bases de données et des tables avec Apache Hive

Types de données fondamentaux

Apache Hive propose une variété de types de données calqués sur les types Java pour assurer une compatibilité optimale lors du traitement de gros volumes de données.

1. Types numériques

Type Plage (Octets) Équivalent Java Suffixe
TINYINT 1 octet byte Y
SMALLINT 2 octets short S
INT 4 octets int -
BIGINT 8 octets long L
FLOAT / DOUBLE 4 / 8 octets float / double -
DECIMAL Variable BigDecimal -

2. Chaînes de caractères

Hive supporte trois formats principaux pour le texte :

  • STRING : Longueur variable, jusqu'à 2 Go.
  • VARCHAR : Longueur limitée (entre 1 et 65355). Idéal pour optimiser le stockage.
  • CHAR : Longueur fixe (max 255). Si la donnée est plus courte, elle est complétée par des espaces.

3. Manipulation temporelle

Le formatage des dates et timestamps est essentiel pour le partitionnement temporel.

-- Récupérer le timestamp actuel
SELECT unix_timestamp();

-- Convertir une date textuelle en timestamp UNIX
SELECT unix_timestamp('2023-10-27 14:30:00');

-- Formater un timestamp UNIX en texte lisible
SELECT from_unixtime(1698417000, 'yyyy/MM/dd HH:mm');

-- Conversion explicite de types
SELECT cast('2023-10-27' AS DATE);

Structures de données complexes

Contrairement au SQL traditionnel, Hive gère nativement les structures imbriquées :

  • MAP : Collection de paires clé-valeur (ex: map<string, int>).
  • ARRAY : Liste d'éléments de même type (ex: array<string>).
  • STRUCT : Ensemble de champs nommés de types différents.
  • UNIONTYPE : Permet de stocker plusieurs types dans un seul champ (similaire aux types génériques).

Opérations DDL : Définition des structures

Gestion des Bases de Données

-- Création d'un espace de travail
CREATE DATABASE IF NOT EXISTS ventes_db;

-- Utilisation de la base
USE ventes_db;

-- Suppression sécurisée (échoue si non vide)
DROP DATABASE ventes_db RESTRICT;

-- Suppression forcée (supprime tout le contenu)
DROP DATABASE ventes_db CASCADE;

Création de Tables

La création de table définit comment les fichiers plats sur HDFS sont interprétés par Hive.

CREATE TABLE IF NOT EXISTS commandes (
    id_commande INT,
    client STRING,
    montant DOUBLE
)
PARTITIONED BY (annee INT, mois INT)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t';

Comparaison : Tables Internes vs Externes

Caractéristique Table Interne (Managed) Table Externe (External)
Contrôle des données Hive gère les métadonnées et les fichiers Hive ne gère que les métadonnées
Effet du DROP TABLE Supprime métadonnées ET fichiers HDFS Supprime uniquement les métadonnées
Emplacement standard Répertoire Warehouse par défaut Défini via la clause LOCASION

Opérations DML : Manipulation des données

Chargement de fichiers (LOAD)

-- Import depuis le système de fichiers local
LOAD DATA LOCAL INPATH '/tmp/data_clients.csv' 
INTO TABLE clients;

-- Déplacement d'un fichier depuis HDFS vers une partition
LOAD DATA INPATH '/hdfs/staging/ventes_octobre.txt' 
OVERWRITE INTO TABLE commandes 
PARTITION (annee=2023, mois=10);

Insertion via requête (INSERT)

-- Ajout de données à partir d'une autre table
INSERT INTO TABLE archive_ventes 
SELECT * FROM commandes WHERE annee = 2022;

-- Remplacement complet du contenu
INSERT OVERWRITE TABLE stats_quotidiennes 
SELECT date_jour, count(*) FROM logs GROUP BY date_jour;

Transfert de tables (EXPORT / IMPORT)

Ces commandes sont principalement utilisées pour migrer des tables entre différents clusters Hadoop.

-- Exportation vers un dossier HDFS (inclut les données et les métadonnées)
EXPORT TABLE commandes TO '/backup/hive/commandes';

-- Importation sur un nouveau cluster
IMPORT TABLE commandes_backup FROM '/backup/hive/commandes';

Étiquettes: Apache Hive Big Data SQL Hadoop Data Engineering

Publié le 20 juin à 01h51