Académique Documents
Professionnel Documents
Culture Documents
CHAPITRE 5 :
Hive
2BA
Ecosystème Hadoop
2
Hadoop Framework Tools
3
Apache Hive
4
Hive, c’est quoi ?
• Apache Hive est une infrastructure d’entrepôt de donnée intégrée sur Hadoop permettant
l'analyse, le requêtage via un langage proche syntaxiquement de SQL ainsi que la synthèse
de données.
• Initialement développée par Facebook, Apache Hive est maintenant utilisé et développé par
• Apache Hive prend en charge l'analyse des grands ensembles de données stockées dans
Hadoop HDFS ou des systèmes de fichiers compatibles tels que Amazon S3.
5
Hive, c’est quoi ?
• Hive fournit un langage similaire à SQL appelée HiveQL avec le schéma lors de la lecture et de
manière transparente convertit les requêtes en map/reduce, Apache Tez et jobs Spark.
• Les trois moteurs d'exécution peuvent fonctionner sur Hadoop YARN.
• Pour accélérer les requêtes, Hive fournit des indexes.
• Par défaut, Hive stocke les métadonnées dans une base de données embarquée Apache Derby,
• D'autres bases de données client/serveur comme MySQL peuvent éventuellement être utilisées.
• Hive prend en charge :
• Les fichiers au format texte : appelés également fichiers plats,
• Les fichiers SequenceFiles : fichiers plats constitués de paires clé/valeur binaires,
• RCFiles - Record Columnar Files : stockent des colonnes dans une table selon le mode d'une
base de données en colonnes.
6
Architecture de Hive
7
Architecture de Hive
• metastore :
• Chargé du stockage des métadonnées pour chaque table (par exemple les schémas ainsi que
les localisations).
• Inclut des métadonnées de partitionnement afin d'aider le driver à suivre la distribution des
bases de données au sein du cluster.
• En pratique, les données sont stockées à la manière d'un SGBD relationnel traditionnel.
• driver :
• Joue le rôle du contrôleur de processus recevant les instances HiveQL.
• Lance l'exécution des instructions par l'intermédiaire de la création de sessions et contrôle la
progression de l'exécution ainsi que le cycle de vie des processus.
• Conserve les métadonnées nécessaires générées durant l'exécution des requêtes HiveQL.
• Joue aussi le rôle de collecteur de données résultant des étapes Reduce.
8
Architecture de Hive
• compiler :
• optimizer :
• Réalise différentes transformations sur le plan d'exécution pour obtenir un DAG optimisé.
• executor :
• Après les phases de compilation et d'optimisation, il exécute les tâches fournies par le DAG.
10
HiveQL
• HiveQL supporte :
• Fonctions utilisateurs,
11
Définition d’un schéma
• Le schéma d’une table est appelé métadonnées.
• Les métadonnées sont stockées dans une base de données MySQL : metastore.
12
Types HiveQL
• Hive définit les types suivants :
• BIGINT (8 octets), INT (4), SMALLINT (2), BYTE (1 octet)
• FLOAT et DOUBLE
• BOOLEAN valant TRUE ou FALSE
• STRING, on peut spécifier le codage (UTF8 ou autre)
• TIMESTAMP exprimé en nombre de secondes.nanosecondes depuis le 01/01/1970 UTC
• données structurées comme avec Pig :
• ARRAY<type> indique qu’il y a une liste de type
• STRUCT<nom1:type1, nom2:type2...> pour une structure regroupant plusieurs
valeurs
• MAP<typecle, typeval> pour une suite de paires clé,valeur
13
Séparations des champs pour lecture
• La création d’une table se fait ainsi :
• Les directives situées après le schéma indiquent la manière dont les données sont stockées dans
le fichier CSV. Ce sont :
• FIELDS TERMINATED BY ';' : il y a un « ; » pour séparer les champs
• COLLECTION ITEMS TERMINATED BY ',' : il y a un « , » entre les éléments d’un ARRAY
• MAP KEYS TERMINATED BY ':' : il y a un « : » entre les clés et les valeurs d’un MAP
• LINES TERMINATED BY '\n' : il y a un « \n » en fin de ligne
• STORED AS TEXTFILE : c’est un CSV.
14
Chargement des données
• Pour charger un fichier CSV qui se trouve sur HDFS dans la table :
• Hive déplace le fichier CSV dans ses propres dossiers, afin de ne pas dupliquer les données.
• On peut écrire CREATE EXTERNAL TABLE ... pour empêcher Hive de capturer le fichier.
• On peut aussi charger un fichier local :
15
Hive & HBase
• Il est possible d’employer une table HBase.
• Cela fait appel à la notion de gestionnaire de stockage (Storage Handler). C’est simplement
une classe générale qui gère la lecture des données. Elle a des sous-classes pour différents
systèmes, dont HBaseStorageHandler pour HBase.
16
Requêtes HiveQL
• Les requêtes HiveQL sont principalement des SELECT.
• Toutes les clauses SQL classiques sont disponibles : FROM, JOIN, WHERE, GROUP BY,
• Il y en a d’autres pour optimiser le travail MapReduce sous-jacent, par exemple pour faire le
17
Requêtes HiveQL
• Il est possible d’exporter des résultats dans un dossier :
18