hive ppt (1)

69

Upload: marwa-baich

Post on 12-Apr-2017

115 views

Category:

Engineering


7 download

TRANSCRIPT

Page 1: Hive ppt (1)
Page 2: Hive ppt (1)

UNIVERSITE HASSAN II-CASABLANCAFACULTE DES SCIENCES BEN MSIK

DEPARTEMENT DES MATHEMATIQUES ETINFORMATIQUE

Master SII 2016/2017

Réalisé par Baich Marwa Mizani Yasmine

Encadré par: Mr M. AZOUAZI

Hive Query Language

Page 3: Hive ppt (1)

3

Plan1. 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

Page 4: Hive ppt (1)

4

Hive ?

Page 5: Hive ppt (1)

5

L’écosystème de Hadoop

Page 6: Hive ppt (1)

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.

Page 7: Hive ppt (1)

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.

Page 8: Hive ppt (1)

Historique et utilisation de Hive2007 : Développé initialement par 2009 : Rendu Open Source par

Page 9: Hive ppt (1)

Architecture de Hive

Web UI HD InsightHive Command Line

Execution Engine

User Interface

s

Meta Store

HiveQL Process Engine

MapReduce

HDFS or Hbase Data Storage

Page 10: Hive ppt (1)

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

Page 11: Hive ppt (1)

Bases de données HiveLangage SQL HiveQL / HQL

Transactions Oui NonUpdate/Delete Oui Non

Latence Faible ElevéeVolume de données Teraoctet Petaoctet

Caractéristiques de Hive

Page 12: Hive ppt (1)

Fonctionnement de HiveHIVE HADOOP

InterfaceJob

Tracker

Task TrackerMap Reduce

Data Node

Name Node

Mapreduce

HDFS

Driver

Execution Engine

Compilateur Meta

Store

Exécuter la

requête

Obtenir le plan Obtenir les

Metadata

Envoyer les Metadata

Exécuter le planEnvoyer

le plan

Exécuter le job

Exécuter les opération

de Metadata

Chercher les résultats

Envoyer les

résultatsEnvoyer les

résultats

Page 13: Hive ppt (1)

Types de données dans Hive1. 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)

Page 14: Hive ppt (1)

• NULL (les valeurs manquantes)

2. Valeurs Nulles

3. Types littérales

• Flottants(FLOAT, DOUBLE)

Types de données dans Hive

Page 15: Hive ppt (1)

Types de données dans Hive4. Types Complexes

• Arrays ARRAY<data_type>

• Maps MAP<primitive_type, data_type>

• Structs STRUCT<col_name : data_type [COMMENT col_comment], ...>

Page 16: Hive ppt (1)

16

HiveQL

Page 17: Hive ppt (1)

CREATE DATABASELa 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

Page 18: Hive ppt (1)

La requête suivante est utilisée pour vérifier une liste de bases de données:

CREATE DATABASE

hive> SHOW DATABASES; Defaultuserdb

Page 19: Hive ppt (1)

Programme JDBC

Page 20: Hive ppt (1)

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

Page 21: Hive ppt (1)

Programme JDBC

Page 22: Hive ppt (1)

CREATE TABLESyntaxe

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]

Page 23: Hive ppt (1)

CREATE TABLEExemple

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;

Page 24: Hive ppt (1)

Programme JDBC

Page 25: Hive ppt (1)

LOAD DATASyntaxe

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.

Page 26: Hive ppt (1)

LOAD DATA• Exemple:le fichier s’appelle sample.txt et se trouve dans le répertoire /home/user 

1201 Gopal 45000 Technical manager1202 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;

Page 27: Hive ppt (1)

Programme JDBC

Page 28: Hive ppt (1)

ALTER TABLESyntaxe

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 ...])

Page 29: Hive ppt (1)

ALTER TABLE

La requête suivante renomme la table d'employé à emp.

Exemple 1:

hive> ALTER TABLE employee RENAME TO emp;

Programme JDBC

Page 30: Hive ppt (1)

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).

Page 31: Hive ppt (1)

ALTER TABLE

Programme JDBC

Page 32: Hive ppt (1)

ALTER TABLEExemple 3:

Ajouter une colonne nommée dept à la table employee

hive> ALTER TABLE employee ADD COLUMNS ( dept STRING COMMENT 'Department name');

Programme JDBC

Page 33: Hive ppt (1)

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

Page 34: Hive ppt (1)

DROP TABLEsyntaxe

DROP TABLE [IF EXISTS] table_name;

• Exemple: Supprimer la table employee

hive> DROP TABLE IF EXISTS employee;

Page 35: Hive ppt (1)

DROP TABLEProgramme JDBC

Le programme JDBC suivant supprime la table des employés.

Page 36: Hive ppt (1)

Création d'une vueVous 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

Page 37: Hive ppt (1)

Création d'une vueLa 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:

Page 38: Hive ppt (1)

Création d'un indexExemplePrenons 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;

Page 39: Hive ppt (1)

Requête SELECTSyntaxe :

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;

Page 40: Hive ppt (1)

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:

Page 41: Hive ppt (1)

Le partitionnement des donnéesLe 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

Page 42: Hive ppt (1)

Le partitionnement des donnéesAjout d'une partitionSyntaxe:

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';

Page 43: Hive ppt (1)

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’);

Page 44: Hive ppt (1)

Le partitionnement des donnéesSuppression 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

Page 45: Hive ppt (1)

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-11Tom,18,2012-11-11Lars,59,2012-11-11Bob,34,2012-11-12Taylor,21,2012-11-12

Hive>CREATE TABLE table1(name STRING, age INT, entry_date STRING)           ROW FORMAT DELIMITED FIELDS TERMINATED BY ',‘ ;

OKTime taken: 6.223 seconds

Hive> LOAD DATA LOCAL INPATH 'data.csv' OVERWRITE INTO TABLE table1;

Le partitionnement des données

Page 46: Hive ppt (1)

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

Page 47: Hive ppt (1)

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 à:

Page 48: Hive ppt (1)

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:

Page 49: Hive ppt (1)

49

Le partitionnement des donnéesConsidé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.

Page 50: Hive ppt (1)

Les jointures dans HIVE : JOIN

LEFT OUTER JOIN

RIGHT OUTER JOIN FULL OUTER JOIN

Page 51: Hive ppt (1)

Les jointures dans HIVE :Nous allons utiliser les deux tableaux.

Customers Orders

Page 52: Hive ppt (1)

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:

Page 53: Hive ppt (1)

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:

Page 54: Hive ppt (1)

Les jointures dans HIVE :o RIGHT OUTER JOINLa 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:

Page 55: Hive ppt (1)

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:

Page 56: Hive ppt (1)

56

Lab

Page 57: Hive ppt (1)

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

Page 58: Hive ppt (1)

Démarrer Hive

start.sh derby

Message affiché :

S’assurer que Apache derby est bien démarré

Page 59: Hive ppt (1)

On exécute le shell

cd $HIVE_HOME/bin./hive

Message affiché :

Démarrer Hive

Page 60: Hive ppt (1)

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”

Page 61: Hive ppt (1)

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 warehouseROW FORMAT DELIMITED → stockage des lignes dans la table HiveLOCATION → 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';

Page 62: Hive ppt (1)

Modifier et Parcourir les tables

Afficher les détails des colonnes d’une table

Résultat affiché :

hive> DESCRIBE employee;

Page 63: Hive ppt (1)

Modifier et Parcourir les tables Renommer une table

Résultat affiché :

hive> ALTER TABLE dep RENAME TO department;hive> SHOW TABLES;

Page 64: Hive ppt (1)

Ajouter des colonnes

Résultat affiché :

Modifier et Parcourir les tables

hive> ALTER TABLE department ADD COLUMNS (loc STRING);hive> DESC department;

Page 65: Hive ppt (1)

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 HDFSOVERWRITE → 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;

Page 66: Hive ppt (1)

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;

Page 67: Hive ppt (1)

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;

Page 68: Hive ppt (1)

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';

Page 69: Hive ppt (1)

MERCI DE VOTRE ATTENTION