SlideShare une entreprise Scribd logo
Introduction à HIVE
Hadoop comme Entrepôt de données
D'où vient Hive ?
●
Chez Facebook manipulation d'une quantité
monstre des données chaque jour
Avoir des alternatives à
●
● MapReduce
Pig
●
● Rentabiliser les ingénieurs qui connaissent et
maîtrisent SQL !
C'est quoi Hive ?
Une infrastructure pour Entrepôt de
Données
on peut tout simplement le considérer
comme un Data Warehouse !
Comment ça marche ?
● Hive a pour fondation Hadoop
Hive stocke ses données dans HDFS
Hive compile des requêtes SQL en jobs
MapReduce et les exécute sur le cluster
Hadoop
●
●
Hive structure la donnée dans un modèle bien
connu : Tables, colonnes, lignes...
Hive architecture, composants
HDFS
CLI JDBC
Browsing DDL Queries
MapReduce
MetaStore
Thrift API
SerDe
Thrift Jute JSON..
Execution
Driver
Parser
Planner
DB
Web
UI
Optimizer
ODBC
Hive Architecture, détail composants (1)
● Interface Externe
● fournit deux sortes d'interfaces
– utilisateur
● commande line (CLI)
WEB
●
– programmation (API)
● JDBC, ODBC
● Thrift Server expose une API très simple pour exécuter les requêtes HiveQL
● Metastore est un catalogue.
● Tous les autres composants de Hive interagissent avec le Metastore.
Hive Architecture, détail composants (2)
● Driver
Gère le cycle de vie des requêtes HiveQL durant leur
compilation, leur optimisation, et leur exécution
Compiler
Transforme les requêtes en un plan qui constitue une
suite de DAG de job MapReduce
●
Le Driver soumet les jobs mapReduce individuels depuis
le DAG vers le moteur d'exécution selon une séquence
Hive Architecture, détail composants (3)
● Le Metastore est un catalogue qui contient les
metadonnées des tables stockées dans Hive
● Database : espace de nom pour les tables
Table : Métadonnées des tables qui contiennent la liste
des colonnes, leur types, leurs propriétaires, leur
emplacements de stockages et les informations de
sérialisation
Partition : chaque partition peut avoir ses propres
colonnes, son stockage et sa sérialisation
Buckets : découpage des partitions (optimisation pour
les jointures)
●
●
●
Les Tables
• Une table Hive est constitué des données stockées et des
métadonnées associées décrivant
• l’agencement des données dans la table.
• Les données sont stockées généralement dans:
o HDFS,
o mais également peuvent l’être dans le système de
fichier local.
• Les métadonnées quand à eux sont stockées dans une
base de données relationnelle.
• Chaque table Hive est matérialisée dans HDFS par un
répertoire.
• Les données d’une table sont sérialisées et stockées dans
des fichiers de ce répertoire.
• Lorsque une table est créée dans Hive, par défaut les
données sont stocké dans répertoire de l’entrepôt de
données géré par Hive.
• Il est possible de créer des tables externe: les données
seront stockées en dehors du répertoire de l’entrepôt de
donnée et Hive ferra référence à ces derniers.
• Généralement les tables externes sont utilisées pour
accéder à un ensemble de données initialement stocké
dans HDFS par un autre processus.
• Une table externe peut être utilisée pour exporter les
données pour un processus tiers.
• Les tables externes peuvent être un moyen de
mutualisation des données entre plusieurs schémas Hive.
Les Tables
CREATE TABLE managed_table (dummy STRING);
LOAD DATA INPATH '/user/tom/data.txt' INTO TABLE
managed_table;
CREATE EXTERNAL TABLE external_table (dummy STRING)
LOCATION '/user/tom/external_table';
LOAD DATA INPATH '/user/tom/data.txt' INTO TABLE
external_table;
Les Tables
Partitions et Buckets
• Hive Organise les tables en partitions.
• Les partitions se font à base de valeur de colonne de
partitionnement. Par exemple la date.
• L’utilisation de cette technique permet un accès plus
rapide aux données (requête sur une ou des tranches
de données).
Partitions
Chaque table peut avoir une ou plusieurs partitions qui
déterminent la distribution des données dans des sous-
répertoires du répertoire de la table.
CREATE TABLE logs (ts BIGINT, line STRING)
PARTITIONED BY (dt STRING, country STRING);
Prenons l’exemple d’un fichier log qui contient des
timestamp. Si le partitionnement se fait sur la date, dans ce
cas la tout l’enregistrement de la même date sera enregistrer
dans la même partition.
Une partition elle même peut être partitionnée comme le
montre l’exemple ci-dessous.
CREATE TABLE logs (ts BIGINT, line STRING)
PARTITIONED BY (dt STRING, country STRING);
LOAD DATA LOCAL INPATH 'input/hive/partitions/file1'
INTO TABLE logs
PARTITION (dt='2012-07-01', country='FR');
/user/hive/warehouse/logs
├── dt=2012-07-01
│ ├── country=FR
│ │ ├── file1
│ │ └── file2
│ └── country=US
│ └── file3
├── dt=2012-07-02
│ ├── country=FR
│ │ ├── file4
│ │ └── file5
│ └── country=US
│ └── file6
Partitions
hive> SHOW PARTITIONS logs;
dt=2012-07-01/country=FR
dt=2012-07-01/country=US
dt=2012-07-02/country=FR
dt=2012-07-02/country=US
Partitions
Il y a deux raisons principales pour lesquelles les tables sont
organisées avec des Buckets, qui sont :
1. Requêtes plus efficaces : Le Bucketing impose une
structure supplémentaire sur la table.
La jointure de deux tables est plus efficace si la
jointure se fait sur une colonne « bucket-ée » de partie
d’autre
2. Échantillonnages plus efficace : Lorsque on travaille avec
un grand ensemble de données, il est très pratique de
tester la requête sur une fraction de l’ensemble de
données lorsque on est en phase de développement.
Buckets
L’exemple ci-dessous montre comment créer une table
avec Bucket où l’id est utilisé pour calculer dans quelle
Bucket l’enregistrement sera enregistré.
Buckets
CREATE TABLE bucketed_users (id INT, name STRING)
CLUSTERED BY (id) INTO 4 BUCKETS;
Hive supporte les types primitives et complexes
Type primitive
Les types primitifs corresponds au type primitifs java,
un certain nombre de nom de ces types sont inspirés
des noms de primitifs MySQL.
Type de données
Type primitive
Type primitive
Hive support trois type complexes, qui sont :
1. Array : même structure que dans Java
2. Map : même structure que dans Java
3. Struct : Une collection de types différents
Type Complexe
CREATE TABLE complex (
col1 ARRAY,
col2 MAP<STRING, INT>,
col3 STRUCT<a:STRING, b:INT, c:DOUBLE>
);
Hive - Create Database
CREATE DATABASE|SCHEMA [IF NOT EXISTS]
<database name>
Syntaxe
hive> CREATE DATABASE [IF NOT EXISTS] userdb;
Exemple
hive> CREATE SCHEMA userdb;
ou
hive> SHOW DATABASES;
default
userdb
Hive - Drop Database
DROP DATABASE StatementDROP (DATABASE|SCHEMA)
[IF EXISTS] database_name;
Syntaxe
hive> DROP DATABASE IF EXISTS userdb;
Exemple
DROP SCHEMA userdb;
ou
Hive - Create Table
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]
Syntaxe
Hive - Create Table
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;
Exemple
Load Data
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO
TABLE tablename
[PARTITION (partcol1=val1, partcol2=val2 ...)]
Syntaxe
Load Data
Fichier Sample.txt
1201 Gopal 45000 Technical manager
1202 Manisha 45000 Proof reader
1203 Masthanvali 40000 Technical writer
1204 Krian 40000 Hr Admin
1205 Kranthi 30000 Op Admin
Exemple
hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'
> OVERWRITE INTO TABLE employee;
Hive - Alter 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 ...])
Syntaxe
hive> ALTER TABLE employee RENAME TO emp;
Exemple
hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double;
hive> ALTER TABLE employee ADD COLUMNS (
> dept STRING COMMENT 'Department name');
Hive - Alter Table
Exemple
hive> ALTER TABLE employee REPLACE COLUMNS (
> eid INT empid Int,
> ename STRING name String);
Hive - DropTable
DROP TABLE [IF EXISTS] table_name;
Syntaxe
hive> DROP TABLE IF EXISTS employee;
Exemple
hive> SHOW TABLES;
emp
ok
Time taken: 2.1 seconds
Hive - Operateurs
hive> SELECT * FROM employee WHERE Id=1205;
hive> SELECT * FROM employee WHERE Salary>=40000;
hive> SELECT 20+30 ADD FROM temp;
hive> SELECT * FROM employee WHERE Salary>40000 &&
Dept=TP;
Exemple
hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT;
hive> SELECT Dept,count(*) FROM employee GROUP BY DEPT;
hive> SELECT c.ID, c.NAME, c.AGE, o.AMOUNT
> FROM CUSTOMERS c JOIN ORDERS o
> ON (c.ID = o.CUSTOMER_ID);
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE
> FROM CUSTOMERS c
> LEFT OUTER JOIN ORDERS o
> ON (c.ID = o.CUSTOMER_ID);
hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE
> FROM CUSTOMERS c
> RIGHT OUTER JOIN ORDERS o
> ON (c.ID = o.CUSTOMER_ID);
Exemple
Hive - Select

Contenu connexe

Similaire à Présentation langage de programmationHive.pdf

Formation access
Formation accessFormation access
Formation access
bouyahia76
 
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdfresume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
FootballLovers9
 
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
Club Scientifique de l'ESI - CSE
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
RihabBENLAMINE
 
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdfLes_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
MouhamedFall30
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
yboussard
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
Romain Cambien
 
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdfDATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
Héla Ben Khalfallah
 
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
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
Patrick Bury
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
Patrick Bury
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQL
Abdoulaye Dieng
 
Elastic serach
Elastic serachElastic serach
Elastic serach
TAOUFIQ ELFILALI
 
Oracle : Foctionnement
Oracle : FoctionnementOracle : Foctionnement
Oracle : Foctionnement
Mohammed Jaafar
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
boulonvert
 
MongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxMongoDB_presentation_o.pptx
MongoDB_presentation_o.pptx
ZALIMAZA
 
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
FATIMAEZZAHRAEOUBELL
 

Similaire à Présentation langage de programmationHive.pdf (20)

Formation access
Formation accessFormation access
Formation access
 
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.pdfresume-theorique-m106-partie3-0903-1-622f07613b825.pdf
resume-theorique-m106-partie3-0903-1-622f07613b825.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
 
presentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdfpresentationatelierphpprt2-140314143938-phpapp02.pdf
presentationatelierphpprt2-140314143938-phpapp02.pdf
 
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdfLes_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
 
Base NoSql et Python
Base NoSql et PythonBase NoSql et Python
Base NoSql et Python
 
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDBSGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
 
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdfDATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
 
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
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
 
introduction au SQL et MySQL
introduction au SQL et MySQLintroduction au SQL et MySQL
introduction au SQL et MySQL
 
Elastic serach
Elastic serachElastic serach
Elastic serach
 
Test
TestTest
Test
 
Oracle : Foctionnement
Oracle : FoctionnementOracle : Foctionnement
Oracle : Foctionnement
 
chapitre 1 Android 2.pptx
chapitre 1 Android 2.pptxchapitre 1 Android 2.pptx
chapitre 1 Android 2.pptx
 
mix-it 2011
mix-it 2011mix-it 2011
mix-it 2011
 
MongoDB.pptx
MongoDB.pptxMongoDB.pptx
MongoDB.pptx
 
MongoDB_presentation_o.pptx
MongoDB_presentation_o.pptxMongoDB_presentation_o.pptx
MongoDB_presentation_o.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
 

Dernier

Webinaire santé prédation programme 31 mai 2024.pdf
Webinaire santé prédation programme 31 mai 2024.pdfWebinaire santé prédation programme 31 mai 2024.pdf
Webinaire santé prédation programme 31 mai 2024.pdf
Institut de l'Elevage - Idele
 
Webinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdf
Webinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdfWebinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdf
Webinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdf
Institut de l'Elevage - Idele
 
Novascope Télécoms et Réseaux Informatiques en BtoB 2023
Novascope Télécoms et Réseaux Informatiques en BtoB 2023Novascope Télécoms et Réseaux Informatiques en BtoB 2023
Novascope Télécoms et Réseaux Informatiques en BtoB 2023
Enov
 
Webinaire santé prédation - Martin MSA 31 mai 2024.pdf
Webinaire santé prédation - Martin MSA 31 mai 2024.pdfWebinaire santé prédation - Martin MSA 31 mai 2024.pdf
Webinaire santé prédation - Martin MSA 31 mai 2024.pdf
Institut de l'Elevage - Idele
 
barometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdf
barometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdfbarometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdf
barometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdf
Jean-michel Neugate
 
Barometre_de_l_Economie_S1_2024_-_BAT__1_.pdf
Barometre_de_l_Economie_S1_2024_-_BAT__1_.pdfBarometre_de_l_Economie_S1_2024_-_BAT__1_.pdf
Barometre_de_l_Economie_S1_2024_-_BAT__1_.pdf
Paperjam_redaction
 

Dernier (6)

Webinaire santé prédation programme 31 mai 2024.pdf
Webinaire santé prédation programme 31 mai 2024.pdfWebinaire santé prédation programme 31 mai 2024.pdf
Webinaire santé prédation programme 31 mai 2024.pdf
 
Webinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdf
Webinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdfWebinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdf
Webinaire santé prédation - Doré Nicolas Inrae 31 mai 2024.pdf
 
Novascope Télécoms et Réseaux Informatiques en BtoB 2023
Novascope Télécoms et Réseaux Informatiques en BtoB 2023Novascope Télécoms et Réseaux Informatiques en BtoB 2023
Novascope Télécoms et Réseaux Informatiques en BtoB 2023
 
Webinaire santé prédation - Martin MSA 31 mai 2024.pdf
Webinaire santé prédation - Martin MSA 31 mai 2024.pdfWebinaire santé prédation - Martin MSA 31 mai 2024.pdf
Webinaire santé prédation - Martin MSA 31 mai 2024.pdf
 
barometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdf
barometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdfbarometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdf
barometrepolitiqueodoxa-mai2024-240527162240-0a77b8ff.pdf
 
Barometre_de_l_Economie_S1_2024_-_BAT__1_.pdf
Barometre_de_l_Economie_S1_2024_-_BAT__1_.pdfBarometre_de_l_Economie_S1_2024_-_BAT__1_.pdf
Barometre_de_l_Economie_S1_2024_-_BAT__1_.pdf
 

Présentation langage de programmationHive.pdf

  • 1. Introduction à HIVE Hadoop comme Entrepôt de données
  • 2. D'où vient Hive ? ● Chez Facebook manipulation d'une quantité monstre des données chaque jour Avoir des alternatives à ● ● MapReduce Pig ● ● Rentabiliser les ingénieurs qui connaissent et maîtrisent SQL !
  • 3. C'est quoi Hive ? Une infrastructure pour Entrepôt de Données on peut tout simplement le considérer comme un Data Warehouse !
  • 4. Comment ça marche ? ● Hive a pour fondation Hadoop Hive stocke ses données dans HDFS Hive compile des requêtes SQL en jobs MapReduce et les exécute sur le cluster Hadoop ● ●
  • 5. Hive structure la donnée dans un modèle bien connu : Tables, colonnes, lignes...
  • 6. Hive architecture, composants HDFS CLI JDBC Browsing DDL Queries MapReduce MetaStore Thrift API SerDe Thrift Jute JSON.. Execution Driver Parser Planner DB Web UI Optimizer ODBC
  • 7. Hive Architecture, détail composants (1) ● Interface Externe ● fournit deux sortes d'interfaces – utilisateur ● commande line (CLI) WEB ● – programmation (API) ● JDBC, ODBC ● Thrift Server expose une API très simple pour exécuter les requêtes HiveQL ● Metastore est un catalogue. ● Tous les autres composants de Hive interagissent avec le Metastore.
  • 8. Hive Architecture, détail composants (2) ● Driver Gère le cycle de vie des requêtes HiveQL durant leur compilation, leur optimisation, et leur exécution Compiler Transforme les requêtes en un plan qui constitue une suite de DAG de job MapReduce ● Le Driver soumet les jobs mapReduce individuels depuis le DAG vers le moteur d'exécution selon une séquence
  • 9. Hive Architecture, détail composants (3) ● Le Metastore est un catalogue qui contient les metadonnées des tables stockées dans Hive ● Database : espace de nom pour les tables Table : Métadonnées des tables qui contiennent la liste des colonnes, leur types, leurs propriétaires, leur emplacements de stockages et les informations de sérialisation Partition : chaque partition peut avoir ses propres colonnes, son stockage et sa sérialisation Buckets : découpage des partitions (optimisation pour les jointures) ● ● ●
  • 10. Les Tables • Une table Hive est constitué des données stockées et des métadonnées associées décrivant • l’agencement des données dans la table. • Les données sont stockées généralement dans: o HDFS, o mais également peuvent l’être dans le système de fichier local. • Les métadonnées quand à eux sont stockées dans une base de données relationnelle. • Chaque table Hive est matérialisée dans HDFS par un répertoire. • Les données d’une table sont sérialisées et stockées dans des fichiers de ce répertoire.
  • 11. • Lorsque une table est créée dans Hive, par défaut les données sont stocké dans répertoire de l’entrepôt de données géré par Hive. • Il est possible de créer des tables externe: les données seront stockées en dehors du répertoire de l’entrepôt de donnée et Hive ferra référence à ces derniers. • Généralement les tables externes sont utilisées pour accéder à un ensemble de données initialement stocké dans HDFS par un autre processus. • Une table externe peut être utilisée pour exporter les données pour un processus tiers. • Les tables externes peuvent être un moyen de mutualisation des données entre plusieurs schémas Hive. Les Tables
  • 12. CREATE TABLE managed_table (dummy STRING); LOAD DATA INPATH '/user/tom/data.txt' INTO TABLE managed_table; CREATE EXTERNAL TABLE external_table (dummy STRING) LOCATION '/user/tom/external_table'; LOAD DATA INPATH '/user/tom/data.txt' INTO TABLE external_table; Les Tables
  • 13. Partitions et Buckets • Hive Organise les tables en partitions. • Les partitions se font à base de valeur de colonne de partitionnement. Par exemple la date. • L’utilisation de cette technique permet un accès plus rapide aux données (requête sur une ou des tranches de données).
  • 14. Partitions Chaque table peut avoir une ou plusieurs partitions qui déterminent la distribution des données dans des sous- répertoires du répertoire de la table. CREATE TABLE logs (ts BIGINT, line STRING) PARTITIONED BY (dt STRING, country STRING); Prenons l’exemple d’un fichier log qui contient des timestamp. Si le partitionnement se fait sur la date, dans ce cas la tout l’enregistrement de la même date sera enregistrer dans la même partition. Une partition elle même peut être partitionnée comme le montre l’exemple ci-dessous.
  • 15. CREATE TABLE logs (ts BIGINT, line STRING) PARTITIONED BY (dt STRING, country STRING); LOAD DATA LOCAL INPATH 'input/hive/partitions/file1' INTO TABLE logs PARTITION (dt='2012-07-01', country='FR'); /user/hive/warehouse/logs ├── dt=2012-07-01 │ ├── country=FR │ │ ├── file1 │ │ └── file2 │ └── country=US │ └── file3 ├── dt=2012-07-02 │ ├── country=FR │ │ ├── file4 │ │ └── file5 │ └── country=US │ └── file6 Partitions
  • 16. hive> SHOW PARTITIONS logs; dt=2012-07-01/country=FR dt=2012-07-01/country=US dt=2012-07-02/country=FR dt=2012-07-02/country=US Partitions
  • 17. Il y a deux raisons principales pour lesquelles les tables sont organisées avec des Buckets, qui sont : 1. Requêtes plus efficaces : Le Bucketing impose une structure supplémentaire sur la table. La jointure de deux tables est plus efficace si la jointure se fait sur une colonne « bucket-ée » de partie d’autre 2. Échantillonnages plus efficace : Lorsque on travaille avec un grand ensemble de données, il est très pratique de tester la requête sur une fraction de l’ensemble de données lorsque on est en phase de développement. Buckets
  • 18. L’exemple ci-dessous montre comment créer une table avec Bucket où l’id est utilisé pour calculer dans quelle Bucket l’enregistrement sera enregistré. Buckets CREATE TABLE bucketed_users (id INT, name STRING) CLUSTERED BY (id) INTO 4 BUCKETS;
  • 19. Hive supporte les types primitives et complexes Type primitive Les types primitifs corresponds au type primitifs java, un certain nombre de nom de ces types sont inspirés des noms de primitifs MySQL. Type de données
  • 21. Hive support trois type complexes, qui sont : 1. Array : même structure que dans Java 2. Map : même structure que dans Java 3. Struct : Une collection de types différents Type Complexe CREATE TABLE complex ( col1 ARRAY, col2 MAP<STRING, INT>, col3 STRUCT<a:STRING, b:INT, c:DOUBLE> );
  • 22. Hive - Create Database CREATE DATABASE|SCHEMA [IF NOT EXISTS] <database name> Syntaxe hive> CREATE DATABASE [IF NOT EXISTS] userdb; Exemple hive> CREATE SCHEMA userdb; ou hive> SHOW DATABASES; default userdb
  • 23. Hive - Drop Database DROP DATABASE StatementDROP (DATABASE|SCHEMA) [IF EXISTS] database_name; Syntaxe hive> DROP DATABASE IF EXISTS userdb; Exemple DROP SCHEMA userdb; ou
  • 24. Hive - Create Table 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] Syntaxe
  • 25. Hive - Create Table 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; Exemple
  • 26. Load Data LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] Syntaxe
  • 27. Load Data Fichier Sample.txt 1201 Gopal 45000 Technical manager 1202 Manisha 45000 Proof reader 1203 Masthanvali 40000 Technical writer 1204 Krian 40000 Hr Admin 1205 Kranthi 30000 Op Admin Exemple hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt' > OVERWRITE INTO TABLE employee;
  • 28. Hive - Alter 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 ...]) Syntaxe hive> ALTER TABLE employee RENAME TO emp; Exemple hive> ALTER TABLE employee CHANGE name ename String; hive> ALTER TABLE employee CHANGE salary salary Double; hive> ALTER TABLE employee ADD COLUMNS ( > dept STRING COMMENT 'Department name');
  • 29. Hive - Alter Table Exemple hive> ALTER TABLE employee REPLACE COLUMNS ( > eid INT empid Int, > ename STRING name String);
  • 30. Hive - DropTable DROP TABLE [IF EXISTS] table_name; Syntaxe hive> DROP TABLE IF EXISTS employee; Exemple hive> SHOW TABLES; emp ok Time taken: 2.1 seconds
  • 31. Hive - Operateurs hive> SELECT * FROM employee WHERE Id=1205; hive> SELECT * FROM employee WHERE Salary>=40000; hive> SELECT 20+30 ADD FROM temp; hive> SELECT * FROM employee WHERE Salary>40000 && Dept=TP; Exemple
  • 32. hive> SELECT Id, Name, Dept FROM employee ORDER BY DEPT; hive> SELECT Dept,count(*) FROM employee GROUP BY DEPT; hive> SELECT c.ID, c.NAME, c.AGE, o.AMOUNT > FROM CUSTOMERS c JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID); hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE > FROM CUSTOMERS c > LEFT OUTER JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID); hive> SELECT c.ID, c.NAME, o.AMOUNT, o.DATE > FROM CUSTOMERS c > RIGHT OUTER JOIN ORDERS o > ON (c.ID = o.CUSTOMER_ID); Exemple Hive - Select