TP2 Map Reduce
Partie I : Word counter
On se propose dans ce qui suit, de tester la solution MapReduce du problème de calcul du nombre
d'occurrences de mots dans un texte donne connue sous le nom de word counter. Pour ceci, il est
demande de :
1. Créer un fichier mapper.py et y écrire le code du mapper.
2. Executer mapper : chmod +x mapper.py
3. Tester le code propose en local sur les 15 premieres lignes du fichier drac.txt en tapant
l'instruction suivante : tail drac.txt | mapper.py
4. Creer le fichier reduce.py et y ecrire le code du reducer.
5. Executer reducer: chmod +x reducer.py
6. Tester le code propose en local sur les 15 premieres lignes du fichier drac.txt en tapant
l'instruction suivante : tail drac.txt | mapper.py | sort | reducer.py
Exercices to do
Partie II : Total de ventes
Comme son nom l'indique, le fichier purchases.txt comporte un ensemble de lignes decrivant les
ventes d'un ensemble de magasins. Chaque ligne est composee de 5 champs separes par des tabulations
sous la forme suivante :
date time store item cost
On se propose dans ce qui suit, de calculer le total des ventes par magasin.
1. Determiner le couple (cle, valeur) a extraire dans ce cas.
2. Creez un fichier map.py et y ecrire le code du mapper. Tester le code propose en local.
3. Creer un fichier reduce.py et y ecrire le code du reducer. Tester ce code en local.
4. Lancer le job MapReduce et verifier le resultat. Executer :
- cat purchases.txt | map.py
- cat purchases.txt | map.py | sort |redvente.py
Partie III : Statistiques des ventes
Dans cette partie, vous allez travailler sur le fichier purchases.txt qui vous a ete deja fourni.
Les differents champs de ce fichier sont de la forme suivante :
date temps magasin produit cout
Ecrire les mappers et reducers permettant de :
1. Donner le total des ventes par categorie de produits.
2. Donner le montant de la vente le plus eleve pour chaque magasin.
3. Quel est le nombre total des ventes et la valeur totale des ventes de tous magasins confondus?
Verifier tous les resultats obtenus en vous referant au fichier de donnees utilise.
Exercice 1 : Graphe social
On dispose de la base de données d'un réseau social contenant plusieurs millions d'utilisateurs. Pour
chacun d'entre eux, on a une liste d'autres utilisateurs : les amis de l'utilisateur courant sur le réseau. On
cherche à générer, pour chaque couple d'utilisateurs distincts, la liste des amis qu'ils ont en
commun.
On ne peut pas effectuer cette opération par le biais d'une requête sur la base de données relationnelle
sans un impact immense sur le serveur du réseau social, potentiellement bloquant pour la base, et donc
pour le site lui-même.
Par conséquent, on voudrait créer une tâche map/reduce pour régler ce problème, et l'exécuter à
intervalles réguliers.
Nos données d'entrée sous la forme Utilisateur => Amis comme suit :
A => B, C, D
B => A, C, D, E
C => A, B, D, E
D => A, B, C, E
E => B, C, D
1. Donnez le couple clé-valeur adapté au traitement en question.
2. Expliquer les étapes qui seront réalisées par le mapper
3. Donnez le pseudo-code du mapper
4. Expliquer les étapes qui seront réalisées par le reducer
5. Donnez le pseudo-code du reducer