Atelier 2: MapReduce
PARTIE 1
4. Exécution du job MapReduce:
$ cd /home/cloudera/Tp_MapRed
$ hadoop jar wordcount.jar org.myorg.WordCount /user/cloudera/wordcount/input /user/cloudera/wordcount/output
Les deux dossiers fournis représente les deux arguments (args[0] et args[1]) de main() dans la classe principale: le premier contient les fichiers à traiter et le deuxième contiendra les résultats.
- Afficher le contenu de tous les fichiers du dossier HDFS /user/cloudera/wordcount/output/ qui contient les résultats produits par les reducers:
$ hdfs dfs -cat /user/cloudera/wordcount/output/*
5. Dans le dossier Tp_MapRed, faire une copie de WordCount.java dans WordTotal.java
- Dans WordTotal.java, remplacez "WordCount" par "WordTotal" et "wordcount" par "wordtotal".
6. Modifier les méthodes Map et Reduce dans WordTotal.java pour calculer le nombre total de mots.
Indication: Tous les tuples produit par la tâche Map doivent avoir la même clé (par exemple: "Nombre de mots")
7. Compiler le code source et exécuter votre Job:
$ cd /home/cloudera/Tp_MapRed
$ rm -rf build
$ mkdir build
$ javac -cp /usr/lib/hadoop/*:/usr/lib/hadoop-mapreduce/* WordTotal.java -d build -Xlint
♠ Ignorez les Warnings que vous allez avoir
$ jar -cvf wordtotal.jar -C build/ .
$ hdfs dfs -rm -r -f /user/cloudera/wordcount/output
$ hadoop jar wordtotal.jar org.myorg.WordTotal /user/cloudera/wordcount/input /user/cloudera/wordcount/output
$ hdfs dfs -cat /user/cloudera/wordcount/output/*
PARTIE 2: REMETTRE LE PROGRAMME DE CHAQUE QUESTION ACCOMPAGNÉ D'UNE CAPTURE D’ÉCRAN DU RÉSULTAT
-
Charger le fichier vol.csv dans le dossier HDFS à créer: /user/cloudera/data_vol/input
La structure de vol.csv est la suivante:
année;mois;jour;num_vol;depart;arrivée;distance - Afficher le contenu du dossier HDFS (commande ls): /user/cloudera/data_vol/input
- Utiliser l'url http://localhost:50070 pour parcourir l'arborescence HDFS via le lien Utilities
-
Enregistrer WordCount.java sous le nom Vol.java
-
Modifier Vol.java afin d'avoir le nombre de vols en partance de chaque aéroport.
public void map (LongWritable key, Text value, Context context)
throws IOException, InterruptedException {
String line = value.toString();
String [] word = line.split(";");
context.write(............ , ................)
} -
Compiler et exécuter le programme
-
Modifier une copie de votre programme afin d'avoir la distance maximale.
-
Modifier une copie de votre programme afin d'avoir le nombre de vols pour chaque pair d'aéroports, sans distinction entre départ et arrivée, Exemple: IND-BWI 24
- Modifier le programme de la question 6 afin d'avoir le nombre de vols en partance et en arrivé pour chaque aéroport. Exemple de résultat : IND Départ 136
IND Arrivée 8
- 13 avril 2020, 11:28