SlideShare une entreprise Scribd logo
1  sur  69
UNIVERSITE HASSAN II-CASABLANCA
FACULTE DES SCIENCES BEN MSIK
DEPARTEMENT DES MATHEMATIQUES ET
INFORMATIQUE
Master SII 2016/2017
Réalisé par
Baich Marwa
Mizani Yasmine
Encadré par: Mr M. AZOUAZI
Hive Query Language
3
1. Présentation de Hive
 Introduction
 définition & Historique & utilisation
 Caractéristiques
 Architecture & fonctionnement
 Types de données
2. Langage HiveQL
3. Lab
 Requêtes LMD
 Requêtes LDD
 Partitionnement des données
 Jointure dans Hive
Hive ?
4
5
L’écosystème de Hadoop
Exécuter les opérations MapReduce
Programme Java MapReduce :
pour les données structurées, semi-structurées, et non-structurées.
Hive :
pour les données structurées.
→ le langage de requête HiveQL.
Pig :
pour les données structurées et semi-structurées.
→ l’approche de Script.
C’est quoi Hive ?
• Écrit en Java avec une infrastructure Data Warehouse ,
• Traite les données structurées dans Hadoop ,
• Il se situe dans la partie supérieure de Hadoop, pour faciliter
la fouille et l’analyse des données
• Exécute des requêtes proches de la syntaxe SQL.
Historique et utilisation de Hive
2007 : Développé initialement par
2009 : Rendu Open Source par
Architecture de Hive
Web UI HD InsightHive Command Line
Execution Engine
User
Interfaces
Meta Store
HiveQL Process Engine
MapReduce
HDFS or Hbase Data Storage
Familier, rapide, évolutif, et extensible
Il n’est pas désigné pour OLTP (OnLine Transaction Processing).
Il est plus proche à OLAP (OnLine Analyse Processing).
N’est pas un langage de requêtes en temps réel.
N’est pas un BD relationnelle.
Structure les données dans un modèle bien connu :Tables, Colonnes, Lignes…
Caractéristiques de Hive
Bases de données Hive
Langage SQL HiveQL / HQL
Transactions Oui Non
Update/Delete Oui Non
Latence Faible Elevée
Volume de données Teraoctet Petaoctet
Caractéristiques de Hive
Fonctionnement de Hive
HIVE HADOOP
Interface
Job Tracker
Task Tracker
Map Reduce
Data
Node
Name
Node
Mapreduce
HDFS
Driver
Execution
Engine
Compilate
ur Meta Store
Exécuter
la requête
Obtenir
le plan Obtenir les
Metadata
Envoyer les
Metadata
Exécuter
le plan
Envoyer
le plan
Exécuter
le job
Exécuter les
opération de
Metadata
Chercher les
résultats
Envoyer les
résultats
Envoyer les
résultats
Types de données dans Hive
1. Types Colonnes
• Intégrale
BIGINT, TINYINT, SMALLINT, INT
• Chaînes de caractère
VARCHAR, CHAR
• Date temporelle
YYYY-MM-DD HH:MM:SS.fffffffff
• Date
(YYYY-MM-DD)
• NULL (les valeurs manquantes)
2. Valeurs Nulles
3. Types littérales
• Flottants
(FLOAT, DOUBLE)
Types de données dans Hive
Types de données dans Hive
4. Types Complexes
• Arrays
ARRAY<data_type>
• Maps
MAP<primitive_type, data_type>
• Structs
STRUCT<col_name : data_type [COMMENT col_comment], ...>
HiveQL
16
CREATE DATABASE
La syntaxe de cette déclaration est la suivante:
CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name>
Exemple: Créer une base de données userdb:
hive> CREATE DATABASE [IF NOT EXISTS] userdb;
hive> CREATE SCHEMA userdb;
ou
La requête suivante est utilisée pour vérifier une liste de bases de données:
CREATE DATABASE
hive> SHOW DATABASES;
Default
userdb
Programme JDBC
DROP DATABASE
DROP DATABASE Statement DROP (DATABASE|SCHEMA) [IF EXISTS]
database_name [RESTRICT|CASCADE];
syntaxe
hive> DROP DATABASE IF EXISTS userdb;
Exemple
 RESTRICT : Supprimer les tables avant la base de données
 CASCADE: Supprimer les tables et la base de données en même temps
Programme JDBC
CREATE TABLE
Syntaxe
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[ROW FORMAT row_format]
[STORED AS file_format]
CREATE TABLE
Exemple
hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String,
destination String)
COMMENT ‘Employee details’
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ‘t’
LINES TERMINATED BY ‘n’
STORED AS TEXTFILE;
Programme JDBC
LOAD DATA
Syntaxe
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
 LOCAL est identifiant pour spécifier le chemin d'accès local. Il est facultatif;
 OVERWRITE est facultative pour écraser les données dans le tableau.
 PARTITION est facultative.
LOAD DATA
• Exemple:
le fichier s’appelle sample.txt et se trouve dans le répertoire /home/user
1201 Gopal 45000 Technical manager
1202 Manisha 45000 Proof reader
1203 Masthanvali 40000 Technical writer
1204 Kiran 40000 Hr Admin
1205 Kranthi 30000 Op Admin
hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
OVERWRITE INTO TABLE employee;
Programme JDBC
ALTER TABLE
Syntaxe
La déclaration prend l'une des syntaxes suivantes basées sur les attributs que nous souhaitons
modifier dans une table.
ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])
ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
ALTER TABLE
La requête suivante renomme la table d'employé à emp.
Exemple 1:
hive> ALTER TABLE employee RENAME TO emp;
Programme JDBC
ALTER TABLE
hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double;
2) Changer des champs de la table employee
Exemple 2:
Le tableau suivant contient les champs de la table des employés et il montre les champs
à modifier (en gras).
ALTER TABLE
Programme JDBC
ALTER TABLE
Exemple 3:
Ajouter une colonne nommée dept à la table employee
hive> ALTER TABLE employee ADD COLUMNS ( dept STRING
COMMENT 'Department name');
Programme JDBC
ALTER TABLE
La requête suivante supprime toutes les colonnes de la table des employés et le remplace par
emp et colonnes de noms:
Exemple 4:
hive> ALTER TABLE employee REPLACE COLUMNS (
eid INT empid Int,
ename STRING name String);
Programme JDBC
DROP TABLE
syntaxe
DROP TABLE [IF EXISTS] table_name;
• Exemple: Supprimer la table employee
hive> DROP TABLE IF EXISTS employee;
DROP TABLE
Programme JDBC
Le programme JDBC suivant supprime la table des employés.
Création d'une vue
Vous pouvez créer une vue au moment de l'exécution d'une instruction SELECT. La syntaxe est la
suivante:
CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT
column_comment], ...) ] [COMMENT table_comment]
AS SELECT ...
Exemple
Création d'une vue
La requête suivante récupère les détails de l'employé en utilisant le scénario ci-dessus:
hive> CREATE VIEW emp_30000 AS
SELECT * FROM employee
WHERE salary>30000;
Suppression d'une Vue
Utilisez la syntaxe suivante pour supprimer une vue:
DROP VIEW view_name
hive> DROP VIEW emp_30000;
La requête suivante supprime une vue nommée comme emp_30000:
Création d'un index
Exemple
Prenons un exemple pour l'indice. Utilisez la même table des employés que nous avons utilisé plus tôt avec les
champs Id, Nom, Salaire, Désignation et Dept. Créer un index nommé index_salary sur la colonne de salaire de
la table des employés.
La requête suivante crée un index:
hive> CREATE INDEX inedx_salary ON TABLE employee(salary) AS
'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler';
Suppression d'un index
DROP INDEX <index_name> ON <table_name>
hive> DROP INDEX index_salary ON employee;
Requête SELECT
Syntaxe :
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[HAVING having_condition]
[LIMIT number];
Exemple
hive> SELECT * FROM employee WHERE salary>30000;
Programme JDBC
// execute statement Resultset res = stmt.executeQuery("SELECT * FROM employee WHERE
salary>30000;");
System.out.println("Result:");
System.out.println(" ID t Name t Salary t Designation t Dept ");
while (res.next()) { System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " +
res.getString(4) + " " + res.getString(5)); }
con.close(); } }
Sortie:
Le partitionnement des données
Le fichier suivant contient le tableau EmployeeData.
/ Tab1 / EmployeeData / file1
Les données ci-dessus est divisé en deux fichiers en utilisant l'année.
/ Tab1 / EmployeeData / 2012 / file2 / Tab1 / EmployeeData / 2013 / file3
Le partitionnement des données
Ajout d'une partition
Syntaxe:
ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION
'location1'] partition_spec [LOCATION 'location2'] ...;
partition_spec:
: (p_column = p_col_value, p_column = p_col_value, ...)
La requête suivante est utilisée pour ajouter une partition à la table des employés.
hive> ALTER TABLE employee
 ADD PARTITION (year=’2013’)
 > location '/2012/part2012';
Le partitionnement des données
Renommer une partition
ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION
partition_spec;
La requête suivante est utilisée pour renommer une partition:
hive> ALTER TABLE employee PARTITION (year=’1203’) RENAME TO PARTITION (Yoj=’1203’);
Le partitionnement des données
Suppression d'une partition
La syntaxe suivante est utilisée pour déposer une partition:
ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION
partition_spec,...;
hive> ALTER TABLE employee DROP [IF EXISTS] PARTITION (year=’1203’);
Exemple
45
Nous allons créer un fichier appelé data.csv, et placez-le dans votre répertoire personnel. Ce sera notre
jeu de données pour cet exemple:
John,45,2012-11-11
Tom,18,2012-11-11
Lars,59,2012-11-11
Bob,34,2012-11-12
Taylor,21,2012-11-12
Hive>CREATE TABLE table1(name STRING, age INT, entry_date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',‘ ;
OK
Time taken: 6.223 seconds
Hive> LOAD DATA LOCAL INPATH 'data.csv' OVERWRITE INTO TABLE table1;
Le partitionnement des données
46
Hive > SELECT
AVG(age),
FROM
table1
WHERE
age &gt;= 21
AND entry_date='2012-12-12';
Le partitionnement des données
27.5 6.5
hive> CREATE TABLE table1( name STRING, age INT entry_date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
hive> CREATE TABLE table1 (name STRING, age INT)
PARTITIONED BY (entry_date STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
Le partitionnement des données
 L'instruction create table pour la table non partitionnée ci-dessus ressemblait à:
hive> SELECT AVG(age), age FROM table1_partitioned WHERE age=21
AND entry_date='2012-11-12';
Hive > INSERT OVERWRITE TABLE table1_partitioned PARTITION (entry_date='2012-11-11’)
SELECT name, age FROM table1 WHERE entry_date='2012-11-11';
Hive > INSERT OVERWRITE TABLE table1_partitioned PARTITION (entry_date='2012-11-12')
SELECT name, age FROM table1 WHERE entry_date='2012-11-12';
Le partitionnement des données
 Le résultat est le même que précédemment:
49
Le partitionnement des données
Considérations relatives au partitionnement :
 Évitez les sous-partitionnements
les partitionnements appliqués à des colonnes contenant uniquement quelques valeurs peuvent
entraîner des partitions très réduites.
 Évitez les sur-partitionnements
l’autre extrême, le partitionnement appliqué à une colonne avec une valeur unique (par exemple,
userid)
 Évitez le décalage de données :
choisissez votre clé de partitionnement avec soin, pour que toutes les partitions soient de taille égale.
Les jointures dans HIVE :
 JOIN
 LEFT OUTER JOIN
 RIGHT OUTER JOIN
 FULL OUTER JOIN
Les jointures dans HIVE :
Nous allons utiliser les deux tableaux.
Customers Orders
Les jointures dans HIVE :
o JOIN:
La requête suivante exécute JOIN sur les tables de clients et les commandes, et récupère les
enregistrements:
hive> SELECT c.ID, c.NAME, c.AGE, o.AMOUNT FROM CUSTOMERS c JOIN
ORDERS o ON (c.ID = o.CUSTOMER_ID);
Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
Les jointures dans HIVE :
o LEFT OUTER JOIN
La requête suivante montre LEFT OUTER JOIN entre les tables de clients et les commandes:
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE FROM CUSTOMERS c LEFT OUTER
JOIN ORDERS o ON (c.ID = o.CUSTOMER_ID);
Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
Les jointures dans HIVE :
o RIGHT OUTER JOIN
La requête suivante montre RIGHT OUTER JOIN entre les tables de clients et les commandes.
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE DE CLIENTS c RIGHT OUTER JOIN
ORDRES o ON (c.ID = o.CUSTOMER_ID);
Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
Les jointures dans HIVE :
o FULL OUTER JOIN
La requête suivante montre FULL OUTER JOIN entre les tables de clients et les commandes:
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE FROM CUSTOMERS c FULL OUTER
JOIN ORDERS o ON (c.ID = o.CUSTOMER_ID);
Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
Lab
56
Configuration de Hive
Configurer le Meta Store
Spécifier le répertoire du Meta Store:
 Si aucune configuration n’est fournie, la base de
donnée Derby sera utilisée par défaut.
 Le fichier de configuration se trouve dans :
$HIVE_HOME/conf/hive-site.xml
Démarrer Hive
start.sh derby
Message affiché :
S’assurer que Apache derby est bien démarré
On exécute le shell
cd $HIVE_HOME/bin./hive
Message affiché :
Démarrer Hive
Tables Managées
Crée une table dans Hive
Charger les données dans une table managée
Vérifier l’emplacement de la nouvelle table
hive> CREATE TABLE employee (id INT, name STRING, dept_id int);
hive> LOAD DATA LOCAL INPATH '/home/biadmin/labs/hive/employee.del'
OVERWRITE INTO TABLE employee;
hadoop fs -ls /biginsights/hive/warehouse”
Tables externes
Créer une table externe qui impose à Hive de se référer aux
données qui existent en dehors du répertoire warehouse
EXTERNAL
→ ne pas déplacer vers le répertoire warehouse
ROW FORMAT DELIMITED
→ stockage des lignes dans la table Hive
LOCATION
→ l’emplacement des données externes
hive> CREATE EXTERNAL TABLE dep (id INT, name STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY 't' LOCATION '/user/biadmin/external_table';
Modifier et Parcourir les tables
Afficher les détails des colonnes d’une table
Résultat affiché :
hive> DESCRIBE employee;
Modifier et Parcourir les tables
Renommer une table
Résultat affiché :
hive> ALTER TABLE dep RENAME TO department;
hive> SHOW TABLES;
Ajouter des colonnes
Résultat affiché :
Modifier et Parcourir les tables
hive> ALTER TABLE department ADD COLUMNS (loc STRING);
hive> DESC department;
Importer des données
LOCAL
→ est pour spécifier que l’emplacement du fichier d’entrée se trouve
dans le système de fichier local Par défaut, on cherche le fichier dans HDFS
OVERWRITE
→ les données existantes dans la table seront écrasées
hive> LOAD DATA LOCAL INPATH '/home/biadmin/labs/hive/department.del'
OVERWRITE INTO TABLE department;
Exporter des données
Insérer les données dans une table Hive
Vérifier la création du fichier dans HDFS
hive> CREATE TABLE names (name STRING);
hive> INSERT OVERWRITE TABLE names SELECT name FROM employee
WHERE id > 7;
hive> dfs -ls /biginsights/hive/warehouse/names;
Insérer les données dans le système de fichier
Lister le contenu du répertoire
Exporter des données
hive> INSERT OVERWRITE DIRECTORY '/user/biadmin/hdfs_out'
SELECT * FROM employee;
hive> dfs -ls /user/biadmin/hdfs_out;
L'exportation, y compris les métadonnées
Vérifier le contenu du répertoire
Exporter des données
hive> dfs -ls /user/biadmin/export ;
hive> EXPORT TABLE names TO '/user/biadmin/export';
MERCI DE VOTRE ATTENTION

Contenu connexe

Tendances

BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4JLilia Sfaxi
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingLilia Sfaxi
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduceAmal Abid
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - IntroductionBlandine Larbret
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : SparkLilia Sfaxi
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceLilia Sfaxi
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherLilia Sfaxi
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataLilia Sfaxi
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5Amal Abid
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & SparkAlexia Audevart
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBaseAmal Abid
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystèmeKhanh Maudoux
 
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursBases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursHatim CHAHDI
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 

Tendances (20)

BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
TP1 Big Data - MapReduce
TP1 Big Data - MapReduceTP1 Big Data - MapReduce
TP1 Big Data - MapReduce
 
Hadoop Hbase - Introduction
Hadoop Hbase - IntroductionHadoop Hbase - Introduction
Hadoop Hbase - Introduction
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
Hadoop
HadoopHadoop
Hadoop
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
TP2 Big Data HBase
TP2 Big Data HBaseTP2 Big Data HBase
TP2 Big Data HBase
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Un introduction à Pig
Un introduction à PigUn introduction à Pig
Un introduction à Pig
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursBases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 

En vedette

Introduction to Apache Pig
Introduction to Apache PigIntroduction to Apache Pig
Introduction to Apache PigJason Shao
 
Big Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesBig Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesJean-Michel Franco
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessVincent de Stoecklin
 

En vedette (6)

Introduction to Pig
Introduction to PigIntroduction to Pig
Introduction to Pig
 
Introduction to Apache Pig
Introduction to Apache PigIntroduction to Apache Pig
Introduction to Apache Pig
 
Big Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendancesBig Data : concepts, cas d'usage et tendances
Big Data : concepts, cas d'usage et tendances
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
 
Big data ppt
Big  data pptBig  data ppt
Big data ppt
 
What is Big Data?
What is Big Data?What is Big Data?
What is Big Data?
 

Similaire à Hive ppt (1)

presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfRihabBENLAMINE
 
LP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptxLP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptxFATIMAEZZAHRAEOUBELL
 
INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3PGambette
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfYasushiTsubakik
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPierre Faure
 
SGBDR - MySQL
SGBDR - MySQLSGBDR - MySQL
SGBDR - MySQLMusatge
 
Cours access
Cours accessCours access
Cours accesskourbali
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurMicrosoft Technet France
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésNeo4j
 
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdfDATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdfHéla Ben Khalfallah
 
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataGUSS
 
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdfc11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdftepoha4848
 

Similaire à Hive ppt (1) (20)

presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
La 2ème partie de la présentation PHP
La 2ème partie de la présentation PHPLa 2ème partie de la présentation PHP
La 2ème partie de la présentation PHP
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
chapitre 1 Android 2.pptx
 
LP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptxLP_chapitre3_Creation et gestion_BD_2019.pptx
LP_chapitre3_Creation et gestion_BD_2019.pptx
 
INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3INF240 - Bases de données DUT SRC1 - Cours 3
INF240 - Bases de données DUT SRC1 - Cours 3
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Développement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdfDéveloppement Web- PHP (partie II).pdf
Développement Web- PHP (partie II).pdf
 
Php 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVCPhp 2 - Approfondissement MySQL, PDO et MVC
Php 2 - Approfondissement MySQL, PDO et MVC
 
SGBDR - MySQL
SGBDR - MySQLSGBDR - MySQL
SGBDR - MySQL
 
Cours access
Cours accessCours access
Cours access
 
Analyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL ServeurAnalyse et optimisation des performances du moteur SQL Serveur
Analyse et optimisation des performances du moteur SQL Serveur
 
Php1
Php1Php1
Php1
 
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautésDigital GraphTour Paris - Neo4j 4.0, les nouveautés
Digital GraphTour Paris - Neo4j 4.0, les nouveautés
 
Sql
SqlSql
Sql
 
Le langage sql
Le langage sqlLe langage sql
Le langage sql
 
Le langage sql
Le langage sqlLe langage sql
Le langage sql
 
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdfDATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
 
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big DataJSS2014 – Hive ou la convergence entre datawarehouse et Big Data
JSS2014 – Hive ou la convergence entre datawarehouse et Big Data
 
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdfc11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
c11-gerer-les-donnees-resume-theorique-partie1-6311eb2f1d745.pdf
 
TP7_Master.pdf
TP7_Master.pdfTP7_Master.pdf
TP7_Master.pdf
 

Plus de marwa baich

Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logiciellesmarwa baich
 
Les règles de passage
Les règles de passageLes règles de passage
Les règles de passagemarwa baich
 
diagramme d'activité
diagramme d'activitédiagramme d'activité
diagramme d'activitémarwa baich
 
Tp création-dune-ontologie
Tp création-dune-ontologieTp création-dune-ontologie
Tp création-dune-ontologiemarwa baich
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sassmarwa baich
 

Plus de marwa baich (10)

Aql métriques logicielles
Aql métriques logiciellesAql métriques logicielles
Aql métriques logicielles
 
hbase lab
hbase labhbase lab
hbase lab
 
hive lab
hive labhive lab
hive lab
 
XML
XMLXML
XML
 
Les règles de passage
Les règles de passageLes règles de passage
Les règles de passage
 
diagramme d'activité
diagramme d'activitédiagramme d'activité
diagramme d'activité
 
Tp création-dune-ontologie
Tp création-dune-ontologieTp création-dune-ontologie
Tp création-dune-ontologie
 
Eucalyptus
EucalyptusEucalyptus
Eucalyptus
 
Ionic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,SassIonic, AngularJS,Cordova,NodeJS,Sass
Ionic, AngularJS,Cordova,NodeJS,Sass
 
LVM "Linux "
LVM  "Linux "LVM  "Linux "
LVM "Linux "
 

Hive ppt (1)

  • 1.
  • 2. UNIVERSITE HASSAN II-CASABLANCA FACULTE DES SCIENCES BEN MSIK DEPARTEMENT DES MATHEMATIQUES ET INFORMATIQUE Master SII 2016/2017 Réalisé par Baich Marwa Mizani Yasmine Encadré par: Mr M. AZOUAZI Hive Query Language
  • 3. 3 1. Présentation de Hive  Introduction  définition & Historique & utilisation  Caractéristiques  Architecture & fonctionnement  Types de données 2. Langage HiveQL 3. Lab  Requêtes LMD  Requêtes LDD  Partitionnement des données  Jointure dans Hive
  • 6. Exécuter les opérations MapReduce Programme Java MapReduce : pour les données structurées, semi-structurées, et non-structurées. Hive : pour les données structurées. → le langage de requête HiveQL. Pig : pour les données structurées et semi-structurées. → l’approche de Script.
  • 7. C’est quoi Hive ? • Écrit en Java avec une infrastructure Data Warehouse , • Traite les données structurées dans Hadoop , • Il se situe dans la partie supérieure de Hadoop, pour faciliter la fouille et l’analyse des données • Exécute des requêtes proches de la syntaxe SQL.
  • 8. Historique et utilisation de Hive 2007 : Développé initialement par 2009 : Rendu Open Source par
  • 9. Architecture de Hive Web UI HD InsightHive Command Line Execution Engine User Interfaces Meta Store HiveQL Process Engine MapReduce HDFS or Hbase Data Storage
  • 10. Familier, rapide, évolutif, et extensible Il n’est pas désigné pour OLTP (OnLine Transaction Processing). Il est plus proche à OLAP (OnLine Analyse Processing). N’est pas un langage de requêtes en temps réel. N’est pas un BD relationnelle. Structure les données dans un modèle bien connu :Tables, Colonnes, Lignes… Caractéristiques de Hive
  • 11. Bases de données Hive Langage SQL HiveQL / HQL Transactions Oui Non Update/Delete Oui Non Latence Faible Elevée Volume de données Teraoctet Petaoctet Caractéristiques de Hive
  • 12. Fonctionnement de Hive HIVE HADOOP Interface Job Tracker Task Tracker Map Reduce Data Node Name Node Mapreduce HDFS Driver Execution Engine Compilate ur Meta Store Exécuter la requête Obtenir le plan Obtenir les Metadata Envoyer les Metadata Exécuter le plan Envoyer le plan Exécuter le job Exécuter les opération de Metadata Chercher les résultats Envoyer les résultats Envoyer les résultats
  • 13. Types de données dans Hive 1. Types Colonnes • Intégrale BIGINT, TINYINT, SMALLINT, INT • Chaînes de caractère VARCHAR, CHAR • Date temporelle YYYY-MM-DD HH:MM:SS.fffffffff • Date (YYYY-MM-DD)
  • 14. • NULL (les valeurs manquantes) 2. Valeurs Nulles 3. Types littérales • Flottants (FLOAT, DOUBLE) Types de données dans Hive
  • 15. Types de données dans Hive 4. Types Complexes • Arrays ARRAY<data_type> • Maps MAP<primitive_type, data_type> • Structs STRUCT<col_name : data_type [COMMENT col_comment], ...>
  • 17. CREATE DATABASE La syntaxe de cette déclaration est la suivante: CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name> Exemple: Créer une base de données userdb: hive> CREATE DATABASE [IF NOT EXISTS] userdb; hive> CREATE SCHEMA userdb; ou
  • 18. La requête suivante est utilisée pour vérifier une liste de bases de données: CREATE DATABASE hive> SHOW DATABASES; Default userdb
  • 20. DROP DATABASE DROP DATABASE Statement DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE]; syntaxe hive> DROP DATABASE IF EXISTS userdb; Exemple  RESTRICT : Supprimer les tables avant la base de données  CASCADE: Supprimer les tables et la base de données en même temps
  • 22. CREATE TABLE Syntaxe CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [ROW FORMAT row_format] [STORED AS file_format]
  • 23. CREATE TABLE Exemple hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String, salary String, destination String) COMMENT ‘Employee details’ ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘t’ LINES TERMINATED BY ‘n’ STORED AS TEXTFILE;
  • 25. LOAD DATA Syntaxe LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]  LOCAL est identifiant pour spécifier le chemin d'accès local. Il est facultatif;  OVERWRITE est facultative pour écraser les données dans le tableau.  PARTITION est facultative.
  • 26. LOAD DATA • Exemple: le fichier s’appelle sample.txt et se trouve dans le répertoire /home/user 1201 Gopal 45000 Technical manager 1202 Manisha 45000 Proof reader 1203 Masthanvali 40000 Technical writer 1204 Kiran 40000 Hr Admin 1205 Kranthi 30000 Op Admin hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt' OVERWRITE INTO TABLE employee;
  • 28. ALTER TABLE Syntaxe La déclaration prend l'une des syntaxes suivantes basées sur les attributs que nous souhaitons modifier dans une table. ALTER TABLE name RENAME TO new_name ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...]) ALTER TABLE name DROP [COLUMN] column_name ALTER TABLE name CHANGE column_name new_name new_type ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
  • 29. ALTER TABLE La requête suivante renomme la table d'employé à emp. Exemple 1: hive> ALTER TABLE employee RENAME TO emp; Programme JDBC
  • 30. ALTER TABLE hive> ALTER TABLE employee CHANGE name ename String; hive> ALTER TABLE employee CHANGE salary salary Double; 2) Changer des champs de la table employee Exemple 2: Le tableau suivant contient les champs de la table des employés et il montre les champs à modifier (en gras).
  • 32. ALTER TABLE Exemple 3: Ajouter une colonne nommée dept à la table employee hive> ALTER TABLE employee ADD COLUMNS ( dept STRING COMMENT 'Department name'); Programme JDBC
  • 33. ALTER TABLE La requête suivante supprime toutes les colonnes de la table des employés et le remplace par emp et colonnes de noms: Exemple 4: hive> ALTER TABLE employee REPLACE COLUMNS ( eid INT empid Int, ename STRING name String); Programme JDBC
  • 34. DROP TABLE syntaxe DROP TABLE [IF EXISTS] table_name; • Exemple: Supprimer la table employee hive> DROP TABLE IF EXISTS employee;
  • 35. DROP TABLE Programme JDBC Le programme JDBC suivant supprime la table des employés.
  • 36. Création d'une vue Vous pouvez créer une vue au moment de l'exécution d'une instruction SELECT. La syntaxe est la suivante: CREATE VIEW [IF NOT EXISTS] view_name [(column_name [COMMENT column_comment], ...) ] [COMMENT table_comment] AS SELECT ... Exemple
  • 37. Création d'une vue La requête suivante récupère les détails de l'employé en utilisant le scénario ci-dessus: hive> CREATE VIEW emp_30000 AS SELECT * FROM employee WHERE salary>30000; Suppression d'une Vue Utilisez la syntaxe suivante pour supprimer une vue: DROP VIEW view_name hive> DROP VIEW emp_30000; La requête suivante supprime une vue nommée comme emp_30000:
  • 38. Création d'un index Exemple Prenons un exemple pour l'indice. Utilisez la même table des employés que nous avons utilisé plus tôt avec les champs Id, Nom, Salaire, Désignation et Dept. Créer un index nommé index_salary sur la colonne de salaire de la table des employés. La requête suivante crée un index: hive> CREATE INDEX inedx_salary ON TABLE employee(salary) AS 'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler'; Suppression d'un index DROP INDEX <index_name> ON <table_name> hive> DROP INDEX index_salary ON employee;
  • 39. Requête SELECT Syntaxe : SELECT [ALL | DISTINCT] select_expr, select_expr, ... FROM table_reference [WHERE where_condition] [GROUP BY col_list] [HAVING having_condition] [LIMIT number]; Exemple hive> SELECT * FROM employee WHERE salary>30000;
  • 40. Programme JDBC // execute statement Resultset res = stmt.executeQuery("SELECT * FROM employee WHERE salary>30000;"); System.out.println("Result:"); System.out.println(" ID t Name t Salary t Designation t Dept "); while (res.next()) { System.out.println(res.getInt(1) + " " + res.getString(2) + " " + res.getDouble(3) + " " + res.getString(4) + " " + res.getString(5)); } con.close(); } } Sortie:
  • 41. Le partitionnement des données Le fichier suivant contient le tableau EmployeeData. / Tab1 / EmployeeData / file1 Les données ci-dessus est divisé en deux fichiers en utilisant l'année. / Tab1 / EmployeeData / 2012 / file2 / Tab1 / EmployeeData / 2013 / file3
  • 42. Le partitionnement des données Ajout d'une partition Syntaxe: ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION partition_spec [LOCATION 'location1'] partition_spec [LOCATION 'location2'] ...; partition_spec: : (p_column = p_col_value, p_column = p_col_value, ...) La requête suivante est utilisée pour ajouter une partition à la table des employés. hive> ALTER TABLE employee  ADD PARTITION (year=’2013’)  > location '/2012/part2012';
  • 43. Le partitionnement des données Renommer une partition ALTER TABLE table_name PARTITION partition_spec RENAME TO PARTITION partition_spec; La requête suivante est utilisée pour renommer une partition: hive> ALTER TABLE employee PARTITION (year=’1203’) RENAME TO PARTITION (Yoj=’1203’);
  • 44. Le partitionnement des données Suppression d'une partition La syntaxe suivante est utilisée pour déposer une partition: ALTER TABLE table_name DROP [IF EXISTS] PARTITION partition_spec, PARTITION partition_spec,...; hive> ALTER TABLE employee DROP [IF EXISTS] PARTITION (year=’1203’); Exemple
  • 45. 45 Nous allons créer un fichier appelé data.csv, et placez-le dans votre répertoire personnel. Ce sera notre jeu de données pour cet exemple: John,45,2012-11-11 Tom,18,2012-11-11 Lars,59,2012-11-11 Bob,34,2012-11-12 Taylor,21,2012-11-12 Hive>CREATE TABLE table1(name STRING, age INT, entry_date STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',‘ ; OK Time taken: 6.223 seconds Hive> LOAD DATA LOCAL INPATH 'data.csv' OVERWRITE INTO TABLE table1; Le partitionnement des données
  • 46. 46 Hive > SELECT AVG(age), FROM table1 WHERE age &gt;= 21 AND entry_date='2012-12-12'; Le partitionnement des données 27.5 6.5
  • 47. hive> CREATE TABLE table1( name STRING, age INT entry_date STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; hive> CREATE TABLE table1 (name STRING, age INT) PARTITIONED BY (entry_date STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; Le partitionnement des données  L'instruction create table pour la table non partitionnée ci-dessus ressemblait à:
  • 48. hive> SELECT AVG(age), age FROM table1_partitioned WHERE age=21 AND entry_date='2012-11-12'; Hive > INSERT OVERWRITE TABLE table1_partitioned PARTITION (entry_date='2012-11-11’) SELECT name, age FROM table1 WHERE entry_date='2012-11-11'; Hive > INSERT OVERWRITE TABLE table1_partitioned PARTITION (entry_date='2012-11-12') SELECT name, age FROM table1 WHERE entry_date='2012-11-12'; Le partitionnement des données  Le résultat est le même que précédemment:
  • 49. 49 Le partitionnement des données Considérations relatives au partitionnement :  Évitez les sous-partitionnements les partitionnements appliqués à des colonnes contenant uniquement quelques valeurs peuvent entraîner des partitions très réduites.  Évitez les sur-partitionnements l’autre extrême, le partitionnement appliqué à une colonne avec une valeur unique (par exemple, userid)  Évitez le décalage de données : choisissez votre clé de partitionnement avec soin, pour que toutes les partitions soient de taille égale.
  • 50. Les jointures dans HIVE :  JOIN  LEFT OUTER JOIN  RIGHT OUTER JOIN  FULL OUTER JOIN
  • 51. Les jointures dans HIVE : Nous allons utiliser les deux tableaux. Customers Orders
  • 52. Les jointures dans HIVE : o JOIN: La requête suivante exécute JOIN sur les tables de clients et les commandes, et récupère les enregistrements: hive> SELECT c.ID, c.NAME, c.AGE, o.AMOUNT FROM CUSTOMERS c JOIN ORDERS o ON (c.ID = o.CUSTOMER_ID); Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
  • 53. Les jointures dans HIVE : o LEFT OUTER JOIN La requête suivante montre LEFT OUTER JOIN entre les tables de clients et les commandes: hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE FROM CUSTOMERS c LEFT OUTER JOIN ORDERS o ON (c.ID = o.CUSTOMER_ID); Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
  • 54. Les jointures dans HIVE : o RIGHT OUTER JOIN La requête suivante montre RIGHT OUTER JOIN entre les tables de clients et les commandes. hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE DE CLIENTS c RIGHT OUTER JOIN ORDRES o ON (c.ID = o.CUSTOMER_ID); Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
  • 55. Les jointures dans HIVE : o FULL OUTER JOIN La requête suivante montre FULL OUTER JOIN entre les tables de clients et les commandes: hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE FROM CUSTOMERS c FULL OUTER JOIN ORDERS o ON (c.ID = o.CUSTOMER_ID); Sur l'exécution réussie de la requête, vous obtenez de voir la réponse suivante:
  • 57. Configuration de Hive Configurer le Meta Store Spécifier le répertoire du Meta Store:  Si aucune configuration n’est fournie, la base de donnée Derby sera utilisée par défaut.  Le fichier de configuration se trouve dans : $HIVE_HOME/conf/hive-site.xml
  • 58. Démarrer Hive start.sh derby Message affiché : S’assurer que Apache derby est bien démarré
  • 59. On exécute le shell cd $HIVE_HOME/bin./hive Message affiché : Démarrer Hive
  • 60. Tables Managées Crée une table dans Hive Charger les données dans une table managée Vérifier l’emplacement de la nouvelle table hive> CREATE TABLE employee (id INT, name STRING, dept_id int); hive> LOAD DATA LOCAL INPATH '/home/biadmin/labs/hive/employee.del' OVERWRITE INTO TABLE employee; hadoop fs -ls /biginsights/hive/warehouse”
  • 61. Tables externes Créer une table externe qui impose à Hive de se référer aux données qui existent en dehors du répertoire warehouse EXTERNAL → ne pas déplacer vers le répertoire warehouse ROW FORMAT DELIMITED → stockage des lignes dans la table Hive LOCATION → l’emplacement des données externes hive> CREATE EXTERNAL TABLE dep (id INT, name STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' LOCATION '/user/biadmin/external_table';
  • 62. Modifier et Parcourir les tables Afficher les détails des colonnes d’une table Résultat affiché : hive> DESCRIBE employee;
  • 63. Modifier et Parcourir les tables Renommer une table Résultat affiché : hive> ALTER TABLE dep RENAME TO department; hive> SHOW TABLES;
  • 64. Ajouter des colonnes Résultat affiché : Modifier et Parcourir les tables hive> ALTER TABLE department ADD COLUMNS (loc STRING); hive> DESC department;
  • 65. Importer des données LOCAL → est pour spécifier que l’emplacement du fichier d’entrée se trouve dans le système de fichier local Par défaut, on cherche le fichier dans HDFS OVERWRITE → les données existantes dans la table seront écrasées hive> LOAD DATA LOCAL INPATH '/home/biadmin/labs/hive/department.del' OVERWRITE INTO TABLE department;
  • 66. Exporter des données Insérer les données dans une table Hive Vérifier la création du fichier dans HDFS hive> CREATE TABLE names (name STRING); hive> INSERT OVERWRITE TABLE names SELECT name FROM employee WHERE id > 7; hive> dfs -ls /biginsights/hive/warehouse/names;
  • 67. Insérer les données dans le système de fichier Lister le contenu du répertoire Exporter des données hive> INSERT OVERWRITE DIRECTORY '/user/biadmin/hdfs_out' SELECT * FROM employee; hive> dfs -ls /user/biadmin/hdfs_out;
  • 68. L'exportation, y compris les métadonnées Vérifier le contenu du répertoire Exporter des données hive> dfs -ls /user/biadmin/export ; hive> EXPORT TABLE names TO '/user/biadmin/export';
  • 69. MERCI DE VOTRE ATTENTION

Notes de l'éditeur

  1. L’écosystème de Hadoop offre à la fois du temps et l’efficacité en regroupant différents sous-projets (outils) qui sont utilisés pour l’aide des modules Hadoop. Dans les exposés précédents, nous avons vu quelques outils, (comme mapreduce, hdfs, hbase …) et maintenant c’est le tour de hive !
  2. On distingue plusieurs façons pour exécuter les opérations de MapReduce : La première c’est L’approche traditionnelle en codant des programmes Java complexes et souvent très difficiles. d'où l'idée de créer un outil au-dessus de Hadoop qui serait facile et accessible au plus large publique. C'est là où Hive entre en jeu en fournissant un langage de requête (aussi connu comme Hive Query Language ou HiveQL) pour extraire des données sur le système Hadoop. La façon qui reste est L’approche de script, en utilisant Pig qui est un logiciel d'analyse de données comparable à Hive.
  3. Hive est un outil écrit en Java qu’on peut tout simplement considérer comme un entrepôt de données, utile pour traiter les données structurées dans Hadoop. Il se situe dans la partie supérieure de Hadoop, pour faciliter la fouille et l’analyse des données ; tout en exécutant des requêtes proches de la syntaxe SQL.
  4. En premier, Hive était développé par Facebook, après Apache Software Foundation l’a pris pour le rendre Open Source sous le nom Apache Hive. Plusieurs grands noms de l'informatique ont déclaré utiliser Hive, comme Facebook, Yahoo et Microsoft. Amazon l’utilise également dans Amazon Elastic MapReduce.
  5. Hive est un logiciel avec une infrastructure de data warehouse, qui permet les interactions entre l’utilisateur et le système de fichier. Les interfaces utilisateurs que Hive supporte sont : Hive Web UI, Hive command line, et Hive HD Insight (pour Windows server). Le Meta Store représente le serveur de BD choisit par hive respectivement pour stocker les schémas de tables, les BD, les colonnes d’une table, leurs types de données, ainsi que le mapping HDFS. HiveQL est similaire à SQL pour interroger les informations schéma dans le Meta Store. HiveQL Process Engine : Le moteur de traitement est l’un des remplacements de l’approche traditionnelle du programme MapReduce. Au lieu d’écrire le programme MapReduce en Java, on peut écrire une requête pour le job MapReduce et l’exécuter. Execution Engine : (moteur d’exécution) c’est la partie de liaison entre HiveQL Process Engine et MapReduce. Il exécute les requêtes et génère les mêmes résultats que MapReduce. HDFS or HBASE : ce sont les techniques de stockage de données dans un système de fichiers.
  6. Hive est tout d’abord familier, rapide, évolutif, et extensible. Il n’est pas désigné pour les opérations transactionnelles, par contre on peut dire qu’il est plus proche aux opérations OLAP. Hive ne traite pas les données en temps réel, Ses BD ne sont pas relationnelles, Et les données sont structurées dans un modèle bien connu
  7. Comme j’ai déjà mentionné au début, le langage de requête fournis par hive se nomme HiveQL. Contrairement aux BD traditionnelles, hive ne traite pas les transactions, Pas de requete update ou delete Un des principaux défauts de hive c’est la latence Et finalement le volume de données se mesure en Teraoctet pour les BD traditionnelles et en Petaoctet pour hive.
  8. Le tableau suivant définit comment Hive interagit avec framework Hadoop 1.l’interface de Hive (que ça soit une interface web ou sur ligne de commande) envoie la requête au Driver pour l’exécuter (n’importe quel Driver de base de données que ça soit JDBC ou autre). 2,le Driver demande l’aide du compilateur de requête qui analyse la requête pour vérifier le plan de la syntaxe et de la requête (cad les conditions requises) 3 . le compilateur envoie la requête de métadonnées au Metastore. 4 .le Metastore envoie les métadonnées comme réponse au compilateur. 5 le compilateur vérifie les conditions requises et renvoie le plan au Driver. l'analyse et la compilation d'une requête est terminée. 6.Exécuter planLe pilote envoie le plan pour le moteur d'exécution exécuter 7 à l’intérieur, le processus de l’exécution du job est un travail du MapReduce. Le moteur d’exécution envoie le job au JobTracker, qui l’envoie au Name node, et qui attribue ce job au TaskTracker, qui est au Data node. 8.pendant le temps de l’exécution du job, le moteur d’exécution peut exécuter les opérations de métadonnées avec le Metastore. 9.le moteur d’exécution reçoit les résultats des nœuds de données pour les envoyer au Driver qui les renvoie à son tour aux interfaces de Hive.
  9.  Hive est un système d'entrepôt de données pour Hadoop qui permet de résumer des données, d’envoyer des requêtes et d'analyser des données à l’aide de HiveQL (un langage de requête similaire à SQL). Apache Hive est un système d'entreposage de données qui permet aux utilisateurs d'interroger les données stockées dans les systèmes de fichiers Hadoop compatibles avec la syntaxe SQL. requêtes Hive sont écrites dans un langage de type SQL appelée Hive Query Language (HQL) Ruche est une technologie de base de données qui permet de définir les bases de données et de tables pour analyser des données structurées. Le thème de l'analyse des données structurées est de stocker les données d'une manière tabulaire, et de transmettre les requêtes pour l'analyser. Ce chapitre explique comment créer la base de données Hive. Hive contient une base de données par défaut nommé par défaut.
  10. Une base de données dans hive est un espace de noms ou une collection de tables. La syntaxe de cette déclaration est la suivante: Ici, IF NOT EXISTS est une clause facultative, qui avertit l'utilisateur qu'une base de données avec le même nom existe déjà. Nous pouvons utiliser SCHEMA en place de base de données dans cette commande. La requête suivante est exécutée pour créer une base de données nommée userdb:
  11. Base de données Drop est une déclaration qui tombe toutes les tables et supprime la base de données. Sa syntaxe est la suivante: Supposons que le nom de la base de données est userdb. La requête suivante supprime la base de données en utilisant CASCADE. Cela signifie la suppression de tables respectives avant de laisser tomber la base de données.
  12. Supposons que vous devez créer une table nommée employé en utilisant l' instruction CREATE TABLE. Le tableau suivant dresse la liste des champs et leurs types de données dans le tableau des employés: Si vous ajoutez l'option IF NOT EXISTS, Hive ignore la déclaration au cas où la table existe déjà.
  13. Le programme JDBC pour créer une table est donnée par exemple.
  14. En général, après la création d'une table dans SQL, nous pouvons insérer des données à l'aide de l'instruction Insert. Mais dans la ruche, on peut insérer des données à l'aide de l'instruction LOAD DATA. Lors de l'insertion des données dans la ruche, il est préférable d'utiliser les données de charge pour stocker les enregistrements en vrac. Il existe deux façons de charger les données: l'une est à partir du système de fichiers local et est du système de fichiers Hadoop seconde.
  15. La requête suivante charge le texte donné dans le tableau.
  16. Les requêtes suivantes renommer le nom de colonne et de la colonne type de données en utilisant les données ci-dessus:
  17. Étant donné ci - dessous est le programme JDBC pour remplacer la colonne de eid avec colonne empid et ename avec le nom.
  18. Prenons un exemple pour une vue. Supposons table des employés comme indiqué ci - dessous, avec les champs Id, Nom, Salaire, Désignation et Dept. Générer une requête pour récupérer les informations sur les employés qui gagnent un salaire de plus de Rs 30000. Nous stockons le résultat dans une vue nommée emp_30000.
  19. Un indice est rien, mais un pointeur sur une colonne particulière d'une table. Création d'un index signifie la création d'un pointeur sur une colonne particulière d'une table. Sa syntaxe est la suivante: Il est un pointeur vers la colonne de salaire. Si la colonne est modifiée, les modifications sont stockées en utilisant une valeur d'index. La requête suivante supprime un index nommé index_salary:
  20. les simples requêtes dans HiveQL s’utilisent de la même façon que dans SQL L’exemple cité ici représente une simple requête select en limitant le nombre de sorties à 5 donc seulement les 5 premières lignes seront affichées Prenons un exemple pour SELECT ... clause WHERE. Supposons que nous ayons la table des employés comme indiqué ci-dessous, avec des champs nommés Id, Nom, Salaire, Désignation et Dept. Générer une requête pour récupérer les informations sur les employés qui gagnent un salaire de plus de Rs 30000.
  21. Hive organise des tables en partitions. Il est un moyen de diviser une table en parties liées sur la base des valeurs de colonnes partitionnées telles que la date, la ville et département. En utilisant une partition, il est facile d'interroger une partie des données. Les tables ou les cloisons sont subdivisées en segments, pour fournir une structure supplémentaire aux données qui peuvent être utilisées pour l' interrogation plus efficace. Bucketing travaux basés sur la valeur de la fonction de hachage d'une certaine colonne d'une table. Par exemple, une table nommée Tab1 contient les données des employés tels que id, nom, département et yoj (ie, année d'adhésion). Supposons que vous devez récupérer les détails de tous les employés qui ont adhéré en 2012. Une requête recherche dans toute la table pour les informations requises. Toutefois, si vous partitionner les données des employés à l'année et de le stocker dans un fichier séparé, il réduit le temps de traitement des requêtes. L'exemple suivant montre comment partitionner un fichier et ses données: Si on applique le partitionnement sur cette table , selon le dernier champs qui est le yoj, on aura 2 fichiers :
  22. Nous pouvons ajouter des partitions à une table en modifiant la table. Supposons que nous avons un employé de la table appelée avec des domaines tels que Id, Nom, Salaire, Désignation, Dept, et YOJ. les données dans une table est divisée sur plusieurs partitions. Chaque partition correspond à une valeur particulière (s) de la colonne (s) de partition et est stockée sous forme d'un sous-répertoire dans le répertoire de la table sur HDFS. Lorsque la table est interrogée, le cas échéant, seules les partitions requises de la table sont interrogés, réduisant ainsi le I / O requis par la requête.
  23. 1 - Maintenant, créez une table sur l'ensemble de données téléchargé. Démarrer la ligne de commande en tapant la ruche ruche sur votre ligne de commande bash: 2 - Cette commande crée une table appelée table1 avec les colonnes spécifiées. Le reste de l'instruction create précise que les champs dans le fichier sous-jacent sont séparés par des virgules. Si ce n'est pas spécifié, Hive utilise ^ A comme séparateur de champ par défaut. 3 - Ce tableau est actuellement vide, mais vous pouvez faire en sorte que la table est créée en procédant comme suit: 4 - Maintenant, nous allons charger des données dans ce tableau:
  24. La requête ci-dessus découvre l'âge moyen et l'écart type dans notre jeu de données en appelant les fonctions de définition de l'utilisateur avg et STDDEV_POP (UDF) sur la colonne d'âge pour les personnes dont l'âge est supérieur à 21. Le résultat ressemble à ceci:
  25. 1 Avec la requête ci-dessus, si la table avait un million de disques, chacun d'entre eux seront nourris à l'emploi de MapReduce. 2 L'instruction create table pour la table non partitionnée ci-dessus ressemblait à: 3 Maintenant, nous allons convertir le même exemple d'utiliser une table partitionnée, partitionné par le Date d'entréecolonne. La create table dans ce cas ressemblerait à: 4 Notez que nous avons supprimé la Date d'entrée colonne de la liste des colonnes, mais a ajouté dans le PARTITION BY l'article, ce qui en fait une colonne virtuelle.
  26. L'exemple dans notre blog initial, Introduction à la ruche , a couru une requête simple sur notre ensemble de données. Toutefois, la requête de lire l'ensemble des données ,même si nous avions un filtre où la clause sur laâgecolonne. Dans la plupart des emplois MapReduce plus grandes quantités de données, le goulot d'étranglement est d'E / S sur les données. Par conséquent, si nous pouvons réduire les E / S besoin de notre travail de MapReduce, nos requêtes deviendraient plus rapidement. Une méthode très courante de le faire est le partitionnement des données. Dans la mise en œuvre de la ruche de partitionnement, les données dans une table est divisée sur plusieurs partitions. Chaque partition correspond à une valeur particulière (s) de la colonne (s) de partition et est stockée sous forme d'un sous-répertoire dans le répertoire de la table sur HDFS. Lorsque la table est interrogée, le cas échéant, seules les partitions requises de la table sont interrogés, réduisant ainsi le I / O requis par la requête. Ajoutons partitions pour entry_date = '11/11/2012' et entry_date = '12/11/2012': Maintenant, nous allons exécuter la même requête que précédemment sur la table partitionnée: https://www.safaribooksonline.com/blog/2012/12/03/tip-partitioning-data-in-hive/
  27. Évitez les sous-partitionnements : les partitionnements appliqués à des colonnes contenant uniquement quelques valeurs peuvent entraîner des partitions très réduites. Par exemple, un partitionnement de genre crée uniquement deux partitions (masculin et féminin), ce qui réduit la latence de moitié seulement. Évitez les sur-partitionnements : l’autre extrême, le partitionnement appliqué à une colonne avec une valeur unique (par exemple, userid) va entraîner de nombreuses partitions et communiquer un stress important au cluster namenode, car ce dernier devra gérer de grandes quantités de répertoires. Évitez le décalage de données : choisissez votre clé de partitionnement avec soin, pour que toutes les partitions soient de taille égale. Par exemple, le partitionnement sur Région peut entraîner un nombre d’enregistrements sous Île-de-France 30 fois supérieur à celui sous Franche-Comté, en raison de la différence de population.
  28. JOIN est une clause qui est utilisé pour combiner des domaines spécifiques de deux tables en utilisant des valeurs communes à chacun. Il est utilisé pour combiner les enregistrements de deux ou plusieurs tables de la base de données. Il est plus ou moins similaire à SQL JOIN.
  29. JOIN est une clause qui est utilisé pour combiner des domaines spécifiques de deux tables en utilisant des valeurs communes à chacun. Il est utilisé pour combiner les enregistrements de deux ou plusieurs tables de la base de données. Il est plus ou moins similaire à SQL JOIN.
  30. Clause JOIN est utilisé pour combiner et récupérer les enregistrements de plusieurs tables. JOIN est la même que OUTER JOIN dans SQL. Une condition JOIN doit être augmentée en utilisant les clés primaires et les clés étrangères des tables
  31. La HiveQL LEFT OUTER JOIN renvoie toutes les lignes de la table de gauche, même s'il n'y a aucune correspondance dans la bonne table. Cela signifie, si la clause ON correspond à 0 (zéro) les enregistrements de la table de droite, l'JOIN retourne encore une ligne dans le résultat, mais avec NULL dans chaque colonne de la table de droite. A LEFT JOIN renvoie toutes les valeurs de la table de gauche, ainsi que les valeurs appariées de la table de droite, ou NULL en cas de non correspondance REJOIGNEZ prédicat.
  32. Le HiveQL RIGHT OUTER JOIN renvoie toutes les lignes de la table de droite, même s'il n'y a pas les matches de la table de gauche. Si la clause ON correspond à 0 (zéro) des enregistrements dans la table de gauche, la REJOIGNEZ encore retourne une ligne dans le résultat, mais avec NULL dans chaque colonne de la table de gauche. UN DROIT JOIN renvoie toutes les valeurs de la table de droite, ainsi que les valeurs appariées de la table à gauche, ou NULL en cas de non correspondance prédicat de jointure.
  33. Le HiveQL FULL OUTER JOIN combine les enregistrements des deux tables extérieures droite qui remplissent la condition JOIN gauche et. La table jointe contient soit tous les enregistrements des deux tables, ou remplit les valeurs NULL pour les matches manquants de chaque côté.