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

PPTX
Hive ppt (1)
PPTX
hiveppt1-170301122544.pptxhiveppt1-170301122544.pptx
PDF
INF240 - Bases de données DUT SRC1 - Cours 3
PDF
PDF
Le langage sql
PDF
Le langage sql
PDF
Cours Big Data Chap6
PPTX
4-TP BD.pptx
Hive ppt (1)
hiveppt1-170301122544.pptxhiveppt1-170301122544.pptx
INF240 - Bases de données DUT SRC1 - Cours 3
Le langage sql
Le langage sql
Cours Big Data Chap6
4-TP BD.pptx

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

PDF
PHP #6 : mysql
PDF
Formation access
PDF
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
PPTX
La 2ème partie de la présentation PHP
PDF
presentationatelierphpprt2-140314143938-phpapp02.pdf
PDF
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
ODP
Base NoSql et Python
PPTX
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
PDF
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
PPTX
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
PPTX
10 big data hadoop
PPTX
10 big data hadoop
PPT
introduction au SQL et MySQL
PPTX
Elastic serach
PPT
PPSX
chap1-big-data.pps pour comprendre le problème de big data
PPTX
Oracle : Foctionnement
PPTX
Pro_Langage_PHP_LES_BASES_DE_DONNEES.pptx
PPTX
Système de gestion des bases de données sous Oracleptx
PPTX
01_Bases_SQL_Guide_Pour_Bien_Démarrer.pptx
PHP #6 : mysql
Formation access
resume-theorique-m106-partie3-0903-1-622f07613b825.pdf
La 2ème partie de la présentation PHP
presentationatelierphpprt2-140314143938-phpapp02.pdf
Les_Tablespaces_Oracle__et_les_Groupes_de_fichiers__SQL_Server_.pdf
Base NoSql et Python
SGBDR vs NoSQL, Différences et Uses Cases. Focus sur ArangoDB
DATABASE_DATA_STRUCTURE_DEVOXXFRANCE2024.pdf
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
10 big data hadoop
10 big data hadoop
introduction au SQL et MySQL
Elastic serach
chap1-big-data.pps pour comprendre le problème de big data
Oracle : Foctionnement
Pro_Langage_PHP_LES_BASES_DE_DONNEES.pptx
Système de gestion des bases de données sous Oracleptx
01_Bases_SQL_Guide_Pour_Bien_Démarrer.pptx
Publicité

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