Académique Documents
Professionnel Documents
Culture Documents
I- Objectifs
Ce workshop permet d’exploiter les différents outils de Big data (Hive, MySQL, Sqoop, HDFS,
Avro) pour importer les données d’une base de données relationnelle MySQL et d’un fichier
log vers HDFS avec CDH (Cloudera Distribution Including Apache Hadoop) et les manipuler
sous HIVE.
II- Introduction
La figure ci-dessous décrit l’extraction et le chargement des données dans HDFS. Les données
structurées sont importées depuis les sources transactionnelles, et certaines tables dimensions
peuvent être récupérées depuis le datawarehouse existant. Les données non structurées sont
aussi importées dans leur état brut.
Dans ce qui suit, on va se focaliser sur l’importation des données à partir de la base de données
relationnelle MySQL vers HDFS et manipulation des données dans HIVE.
1
Ines Channoufi & Ines Slimene Esprit 2019-2020
Big Data Analytics 4ERP-BI / 4DS
Pour analyser ces données, nous avons besoin de les migrer dans le système Hadoop Distributed
File System (HDFS). Pour cette raison, nous avons besoin de trouver un outil qui permet de
transférer facilement des données structurées à partir d'un SGBDR à HDFS, tout en préservant
leur structure. Cela nous permet d'interroger les données sur HDFS sans affecter les données
du SGBDR. Cet outil est Apache Sqoop, qui fait partie du CDH. Il permet de charger
automatiquement nos données relationnelles de MySQL en HDFS, tout en préservant la
structure.
Les données sur HDFS peuvent être stockées sous une forme binaire ou une forme textuelle,
nous visons exploiter le type de fichier Avro qui représente un format de fichier optimisé dans
Hadoop.
2
Ines Channoufi & Ines Slimene Esprit 2019-2020
Big Data Analytics 4ERP-BI / 4DS
Connexion mysql :
mysql -u root -p
mysql> show databases;
mysql> use retail_db;
mysql> show tables;
Dans ce scénario, on se propose d’importer la totalité des la base de données retail_db dans
HIVE. Il faut suivre les étapes suivantes :
En fonction du volume des données à importer, cette commande peut prendre un peu de temps
pour se terminer. Elle lance des opérations (jobs) MapReduce pour transférer les données de la
base de données MySQL, vers HDFS
5. Maintenant, on doit importer les tables dans HIVE. Donc on doit créer les tables
correspondantes :
3
Ines Channoufi & Ines Slimene Esprit 2019-2020
Big Data Analytics 4ERP-BI / 4DS
Location '/user/hive/warehouse/h_retail_db.db/departments';
sqoop import-all-tables \
-m 1 \
--connect jdbc:mysql://localhost:3306/retail_db \
--username=root --password=cloudera \
--compression-codec=snappy \
--as-avrodatafile \
--warehouse-dir=/user/hive/warehouse/retail_avro.db
ls -l *.avsc
4
Ines Channoufi & Ines Slimene Esprit 2019-2020
Big Data Analytics 4ERP-BI / 4DS
6. Importation des schémas des tables (fichiers .avsc )du local vers HDFS
Il est à noter que le schéma et les données sont stockés dans des fichiers séparés (.avro et .avsc).
Le schéma est appliqué uniquement lorsque les données sont interrogées en se basant sur une
technique appelée 'schema-on-read'.
Cela donne la souplesse nécessaire pour interroger les données avec SQL même si elles sont
dans un format Avro. Tandis que, si on manipule une base de données traditionnelle, il est
obligatoire de définir le schéma avant de gérer des données.
A ce niveau, nous avons importé une grande quantité de données (de SGBD vers HDFS) sans
préciser comment les interroger en utilisant leurs structures.
Les schémas Avro ont été générés dans le système local contrairement aux données qui sont
générées sous HDFS.
Pour interroger ces données avec Apache Hive, nous devons copier les fichiers d’extension
(.avsc) dans HDFS de cette manière :
Après avoir importé les données et leur schéma dans HDFS, nous passons maintenant à
l’interrogation en utilisant Apache Hive.
Pour créer des tables à partir des fichiers Avro nous devons exécuter ces requêtes de création
des tables comme suit :
5
Ines Channoufi & Ines Slimene Esprit 2019-2020
Big Data Analytics 4ERP-BI / 4DS
LOCATION '/user/hive/warehouse/retail_avro.db/departments'
LOCATION '/user/hive/warehouse/retail_avro.db/categories'
LOCATION '/user/hive/warehouse/retail_avro.db/customers'
LOCATION '/user/hive/warehouse/retail_avro.db/orders'
LOCATION '/user/hive/warehouse/retail_avro.db/order_items'
LOCATION '/user/hive/warehouse/retail_avro.db/products'
6
Ines Channoufi & Ines Slimene Esprit 2019-2020
Big Data Analytics 4ERP-BI / 4DS
VII. Scénario 3 : Importations des données à travers une sous interrogation directement
sous Hive
Pour ce faire, il faut tout d’abord vérifier que le dossier « /user/cloudera » ne contient pas un
dossier « categories ». Dans le cas contraire, il faut le supprimer (Sqoop importe la copie de la
table dans un dossier portant le nom de la table dans « /user/cloudera » puis la transfère à
« hive/warehouse »).
7
Ines Channoufi & Ines Slimene Esprit 2019-2020