TP 3 Hive v0.1

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 5

Hadoop - Hive :

Activité 1 :
1. On commence par le téléchargement des médias d’installation depuis le site officiel
d’Apache :

wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

2. Décompressez l’archive téléchargé :

tar xvzf apache-hive-3.1.2-bin.tar.gz

3. On modifie les variables d’environnement sur le fichier « .bashrc » :

export HIVE_HOME=/home/hadoop/apache-hive-3.1.2-bin
export PATH=$PATH:/home/hadoop/apache-hive-3.1.2-bin/bin

4. Supprimez une version incompatible d’un composant hive sur Hadoop:

source ~/.bashrc
rm apache-hive-3.1.2-bin/lib/guava-19.0.jar
cp hadoop/share/hadoop/hdfs/lib/guava-27.0-jre.jar apache-hive-3.1.2-bin/lib/

5. On vérifie l’existence du répertoire “tmp” sous HDFS et on ajoute les autorisations nécessaires
:

hdfs dfs -mkdir /tmp


hdfs dfs -chmod g+w /tmp
hdfs dfs -ls /

6. On crée un répertoire HDFS pour le Hive Warehouse :

hdfs dfs -mkdir -p /user/hive/warehouse


hdfs dfs -chmod g+w /user/hive/warehouse
hdfs dfs -ls /user/hive

7. On utilise l’outil “schematool” pour instancier la base de données « Derby » pour le stockage
des métadonnées de Hive :

schematool –initSchema –dbType derby

8. Maintenant on peut démarrer « Hive » avec la commande:

hive
Activité 2 :
1. Démarrez « Hive » pour charger l’environnement de travail :

hive

2. Effacez l’écran pour avoir un espace clair pour le travail :

!clear ;

3. Affichez les bases de données existantes :

show databases ;

4. Affichez les tables existantes :

show tables ;

5. Créez une nouvelle base de données « test1 » :

create database test1 ;

6. Affichez les bases de données pour vérifier la création de la nouvelle base de données:

show databases ;

7. On affiche le contenu du Hive Warehouse sur HDFS (vérifiez la création de « test1.db ») :

!hdfs dfs -ls /user/hive/warehouse;

8. Commencez l’utilisation de la nouvelle base de données « test1.db » :

use test1 ;

9. Créez la table « movies » avec la structure suivante :

create table movies (


movie_id INT,
movie_title STRING,
release_date STRING,
video_release_date STRING,
imdb_url STRING,
unknown INT,
action INT,
adventure INT,
animation INT,
children INT,
comedy INT,
documentary INT,
drama INT,
fantasy INT,
film_noir INT,
horror INT,
musical INT,
mystery INT,
romance INT,
sci_fi INT,
thriller INT,
war INT,
western INT)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS TEXTFILE;
10. Affichez maintenant les tables de la base de données « test1 » et vérifiez la création de la
nouvelle table:

show tables ;

11. Affichez une description de la tables « movies » pour voir la structure de la table ainsi que le
chemin d’accès sur HDFS:

describe movies
describe extended movies

12. Affichez le contenu de la base de données « test1.db » sur Hive Warehouse ‘HDFS’ :

!hdfs dfs –ls /user/hive/warehouse/test1.db;

13. Maintenant, essayez de charger des données (HDFS) erronées sur la table:

LOAD DATA INPATH ‘/user/input/sample.txt’ INTO TABLE movies;

NB: La commande va déplacer les données du répertoire HDFS désigné vers Hive Warehouse.
14. Affichez le contenu de la table avec la commande:

select * from movies;

15. Supprimez le contenu de la table avec :

TRUNCATE TABLE movies ;

16. Chargez maintenant les données correctes depuis HDFS :

LOAD DATA INPATH ‘/user/input/u.item’ INTO TABLE movies;

NB: Pour charger des données depuis votre serveur local, on utilise la commande suivante :

LOAD DATA LOCAL INPATH ‘/path/local’

17. Affichez le contenu de la table avec la commande:

select * from movies LIMIT 10;

18. Maintenant, vérifiez que les données ont été déplacés du répertoire HDFS vers Hive
warehouse:

!hdfs dfs –ls /user/input


Activité 3 :
1. Déplacez le fichier « u.info » vers le répertoire HDFS « /user/input » :

Hdfs dfs –mkdir /user/input/userinfo


hdfs dfs –put u.info /user/input/userinfo

2. Démarrez Hive et créez une nouvelle table:

hive
create external table users(
user_id INT,
age INT,
gender INT,
occupation STRING,
zip_code STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
STORED AS TEXTFILE
LOCATION '/user/input/userinfo';

3. Vérifiez la création de la table avec:

show tables ;
describe formatted users ;

4. Effectuez un affichage des 10 première ligne de la table pour vérifier qu’elle pointe vers le
fichier externe HDFS :

select * from users limit 10 ;

5. Vous pouvez examiner que le tableau est rempli avec des valeurs nuls, pour cette raison
vérifier le contenu du fichier « u.info » :

!hdfs dfs –cat /user/input/userinfo/u.info;

6. Le format du fichier ne correspond pas à la structure du tableau, pour cette raison on va


remplacer ce fichier « u.info » par le fichier « u.user » :

!hdfs dfs –put u.user /user/input/userinfo;


!hdfs dfs –rm /user/input/userinfo/u.info;

NB: On peut içi toucher que Hive ne vérifie pas le contenu des éléments que durant la lecture.
7. Effectuez un affichage des 10 première ligne de la table pour vérifier qu’elle pointe vers le
bon fichier externe HDFS :

select * from users limit 10 ;

8. On peut voir que le troisième champ (gender) est rempli par des valeurs nul à cause du type de
champ que nous avons déclaré comme « INT ». Modifiez le type de ce champ et réaffichez le
contenu de la table :
alter table users change gender gender string;
select * from users limit 10 ;

9. Maintenant, utilisez Hive pour sélectionnez le nombre des utilisateurs qui travaillent comme
« occupation=artist » :

select count(*) from users where occupation = 'artist';

NB: vous pouvez voir maintenant que Hive invoque Hadoop MapReduce pour exécuter la requête et
cela peut prendre un moment sous une installation « Standalone ».
Il faut s’assurer que le gestionnaire des ressources YARN est bien démarré (start-yarn.sh).
10. On peut créer une table à partir d’une requête de séléctionne :

create table occupation_count


stored as RCFile
as select count(*), occupation from users group by occupation;
select * from occupation_count;

11. On peut aussi créer une table similaire à « occupation_count » avec :

create table occupation2 like occupation_count ;


select * from occupation2;
describe formatted occupation2 ;

NB: vous pouvez voir que la création d’une table avec « like » crée une table similaire de structure
mais vide.

Vous aimerez peut-être aussi