Réalisé par :
Pr Khadija EL AZHARI et Pr Lamia Karim
1
Objectifs
Comprendre la base de données Hive
Découvrir les opportunités de Hive
Acquérir les connaissances nécessaires permettant
de mettre en œuvre Hive
2
Aperçu Historique 05
04
Un grand nombre 03
d’utilisateur ne maîtrisent pas
tous Java et les autres Les utilisateurs
langages de codage. étaient à l'aise avec
les requêtes sql
Facebook a utilisé
hadoop comme
solution pour gérer
02
le big data
croissant
01
données
Mapreduce obligeait les
utilisateurs à écrire de
longs codes
Pourquoi Hive?
Les utilisateurs avaient Hive QL
Pour le traitement et l'analyse des Solution
besoin d'un langage
données, les utilisateurs ont eu des
similaire au SQL qui était
difficultés à coder car ils ne maîtrisaient pas
bien connu de
tous les langages de codage.
tous les utilisateurs
Preprocessing Analyse
Hive, c’est quoi ?
Hive est un système d'entrepôt de données qui est utilisé pour interroger et analyser de
grands ensembles de données stockés dans HDFS.
5
Hive, c’est quoi ?
Hive est un système d'entrepôt de données qui est utilisé pour interroger et analyser de
grands ensembles de données stockés dans HDFS.
6
Hive, c’est quoi ?
Hive est un système d'entrepôt de données qui est utilisé pour interroger et analyser de
grands ensembles de données stockés dans HDFS.
7
Hive, c’est quoi ?
Hive est un système d'entrepôt de données qui est utilisé pour interroger et analyser de
grands ensembles de données stockés dans HDFS.
8
Principes clés de Hive
Définit un
langage de Familier, rapide,
requête de type évolutif et
SQL appelé HQL extensible.
Il est conçu pour
OLAP.
Permet aux Il stocke le schéma
programmeurs de dans une base de
brancher des données et les données
mappeurs et des traitées dans HDFS.
réducteurs
personnalisés
9
Principes clés de Hive
Entrepôt de données
Un système utilisé pour les rapports et l'analyse des données.
Les DW sont des référentiels centraux de données intégrées
provenant d'une ou de plusieurs sources.
ETL
processus d'extraction des données de la source et de les
importer dans l'entrepôt de données. Extraire, transformer
et charger.
10
Motivation
Yahoo a travaillé sur Pig pour faciliter le déploiement
d'applications sur Hadoop.
• Leur besoin était principalement axé sur les données non
structurées
Simultanément, Facebook a commencé à déployer des
solutions d’entrepôt sur Hadoop qui ont abouti à Hive.
• La taille des données en cours de collecte et d'analyse dans
l'industrie pour la veille stratégique augmente rapidement, ce
qui rend la solution traditionnelle extrêmement coûteuse.
11
Utilisation de Hive sur Facebook
Hive et Hadoop sont largement utilisés dans Facebook pour
différents types d’opérations.
700 To = 2.1 Petabyte après la réplication!
12
Data model
Hive structure les données en concepts de base de données bien compris
tels que:
• tables, lignes, colonnes, partitions
Il supporte les types primitifs: integers, floats, doubles et strings
Hive prend également en charge:
• Arrays: Les éléments du tableau sont de type chaîne de caractères.
Les éléments du tableau sont délimités par des virgules. Par exemple,
un tableau de fruits est représenté par [apple,banana,orange].
SerDe: une API sérialisée et désérialisée est utilisée pour déplacer des
données dans et hors des tables
13
Query Language (HiveQL)
DDL :
CREATE DATABASE
CREATE TABLE
ALTER TABLE
SHOW TABLE
DESCRIBE
DML :
LOAD TABLE
INSERT
QUERY :
SELECT
GROUP BY
JOIN
14
Architecture of Hive
15
Architecture of Hive
16
Architecture of Hive
17
Fonctionnement de Hive
18
Hive QL – Join
page_view pv_users
pageid userid time
user pageid age
userid age gender
1 111 9:08:
01 1 25
2 111 9:08:
x 111 25 female =
2 25
13 222 32 male
1 32
1 222 9:08:
14
•SQL:
INSERT INTO TABLE pv_users
SELECT [Link], [Link]
FROM page_view pv JOIN user u ON ([Link] = [Link]);
19
Hive QL – Join MapReduce
page_view
pageid userid time key value key value
111 <1,1>
1 111 9:08:01 111 <1,1>
pv_users
111 <1,2> 111 <1,2>
2 111 9:08:13 pageid age
222 <1,1> 111 <2,25> 1 25
1 222 9:08:14
2 25
Map Shuffle Reduce
Sort
pageid age
user 1 32
key value
userid age gender key value
111 25 female 111 <2,25> 222 <1,1>
222 32 male 222 <2,32> 222 <2,32>
20
Hive QL – Group By
pv_users
pageid age
pageid_age_sum
pageid age Count
1 25
1 25 1
2 25
2 25 2
1 32
1 32 1
2 25
SQL:
INSERT INTO TABLE pageid_age_sum
SELECT pageid, age, count(1)
FROM pv_users
GROUP BY pageid, age;
21
Hive QL – Group By in Map Reduce
pv_users pageid_age_sum
pageid age key value key value pageid age Count
1 25 <1,25> 1 <1,25> 1 1 25 1
1 32 1
2 25 <2,25> 1 <1,32> 1
Shuffle
Map Reduce
Sort
pageid age key value key value pageid age Count
1 32 <1,32> 1 <2,25> 1 2 25 2
2 25 <2,25> 1 <2,25> 1
22
Hive QL – Group By with Distinct
page_view
pageid userid time pageid
result
1 111 9:08:01 1
pageid count_distinct_userid
2 111 9:08:13 2
Map 1 2
1 222 9:08:14 1 2 1
2 111 9:08:20 2
SQL
SELECT pageid, COUNT(DISTINCT userid)
FROM page_view
GROUP BY pageid
23
Hive QL – Group By with Distinct in Map
Reduce
page_view
pageid userid time key v pageid count
1 111 9:08:01 <1,111> 1 2
2 111 9:08:13 <1,222>
Shuffle
Reduce
Sort
pageid userid time key v pageid count
1 222 9:08:14 <2,111> 2 1
2 111 9:08:20 <2,111>
24
Hive QL – Internal Tables
Stockées dans un répertoire basé sur les paramètres de
[Link]
les tables internes sont par défaut stockées dans le répertoire suivant
/user/hive/warehouse (modifiable dans le fichier de configuration).
La suppression de la table supprime les métadonnées et les données de
master-node et HDFS respectivement.
La sécurité des fichiers des tables internes est contrôlée uniquement via HIVE.
La sécurité doit être gérée dans HIVE, probablement au niveau du schéma
(dépend de l'organisation).
25
Hive QL – Internal Tables
CREATE TABLE ma_table_interne (
colonne1 INT,
colonne2 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;
26
Hive QL – External Tables
Une table externe stocke des fichiers sur le serveur HDFS, mais les tables ne
sont pas complètement liées au fichier source.
Si vous supprimez une table externe, le fichier reste sur le serveur HDFS.
Par exemple, si vous créez une table externe appelée «table_test» dans HIVE, à
l'aide de HIVE-QL et liez la table au fichier «fichier», la suppression de
«table_test» de HIVE ne supprimera pas «fichier» de HDFS.
Les fichiers de table externes sont accessibles à toute personne ayant accès à la
structure de fichier HDFS. Par conséquent, la sécurité doit être gérée au niveau
du fichier/dossier HDFS.
Les métadonnées sont conservées sur le nœud maître et la suppression d'une
table externe de HIVE supprime uniquement les métadonnées et non les
données/fichiers.
27
Hive QL – External Tables
CREATE EXTERNAL TABLE ma_table_externe (
colonne1 INT,
colonne2 STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
LOCATION '/chemin/vers/les/fichiers/de/donnees';
28
DDL : Data Definition Language
CREATE DATABASE
Hive est une technologie de base de données qui permet de définir des
bases de données et des tables pour analyser des données structurées.
Le thème de l'analyse des données structurées consiste à stocker les
données sous forme des tables, et à passer des requêtes pour les analyser.
Hive contient une base de données par défaut nommée default.
29
DDL : Data Definition Language
CREATE DATABASE
Une instruction utilisée pour créer une base de données dans Hive.
Une base de données dans Hive est un namespace ou une collection de
tables.
30
DDL: Data Definition Language
➢ CREATE DATABASE
CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>;
IF NOT EXISTS est une clause facultative, qui notifie à l'utilisateur qu'une
base de données portant le même nom existe déjà. Nous pouvons utiliser
SCHEMA à la place de DATABASE dans cette commande.
Exemple
CREATE DATABASE [IF NOT EXISTS] userdata;
CREATE SCHEMA userdata;
31
DDL: Data Definition Language
La requête suivante est utilisée pour vérifier une liste de bases de données :
hive> SHOW DATABASES;
default
userdb
32
DDL: Data Definition Language
Programme JDBC
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
public class HiveCreateDb {
private static String driverName = "[Link]";
public static void main(String[] args) throws SQLException {
// Register driver and create driver instance
[Link](driverName);
// get connection
Connection con =
[Link]("jdbc:hive://localhost:10000/default", "", "");
Statement stmt = [Link]();
[Link]("CREATE DATABASE userdb");
[Link](“Database userdb created successfully.”);
[Link]();
}
33
}
DDL: Data Definition Language
Enregistrez le programme dans un fichier nommé [Link]. Les
commandes suivantes sont utilisées pour compiler et exécuter ce
programme
$ javac [Link]
$ java HiveCreateDb
Create userdb database successful.
34
Formats de fichiers
35