La dernière génération des bases de données ont les particularités suivante :
Être non relationnel, distribuée , open source et scalable.
Ce mouvement commence en 2009 et est entrain de grandir rapidement et avec beaucoup d'engouement.
La conférence a pour but de présenté les principales base noSql accessible en python. Elle sera agrémentée pour chaque base de donnée (environ 4, 10 min chacune) d'une présentation informative, d'une modélisation de schéma et d'un exemple d'application accédant au donnée (en python).
Il est important de souligner que la base de données ne se résume pas simplement à une requête à optimiser, mais également à une structure de données qu'il convient de choisir et de configurer avec soin.
La dernière génération des bases de données ont les particularités suivante :
Être non relationnel, distribuée , open source et scalable.
Ce mouvement commence en 2009 et est entrain de grandir rapidement et avec beaucoup d'engouement.
La conférence a pour but de présenté les principales base noSql accessible en python. Elle sera agrémentée pour chaque base de donnée (environ 4, 10 min chacune) d'une présentation informative, d'une modélisation de schéma et d'un exemple d'application accédant au donnée (en python).
Il est important de souligner que la base de données ne se résume pas simplement à une requête à optimiser, mais également à une structure de données qu'il convient de choisir et de configurer avec soin.
Novascope Télécoms et Réseaux Informatiques en BtoB 2023Enov
Depuis 1996, nous mesurons la digitalisation des entreprises françaises grâce à notre observatoire Novascope Télécoms et Réseaux informatiques en B2B. Découvrez quelques résultats exclusifs de la vague 2023.
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.
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