Vous êtes sur la page 1sur 5

Université des Sciences et de la Technologie d’Oran -Mohammed BOUDIAF-

Faculté des Mathématiques et Informatique


Département d’Informatique
Master II Big Data et Systèmes Multi-échelles Année 2021-2022

TD MapReduce
Exercice 1
Que fait ce programme MapReduce?

Opération Map: Entrée: document d


Pour chaque mot dans d faire:
Retourner (taille(mot), 1)
Opération Reduce: Entrée: (clé, [val1,....])
int x = 0;
Pour chaque val dans [val1,....] faire:
x++;
retourner (clé, x);
Dérouler sur l’exemple suivant les résultats des différentes étapes du programme ci-dessus.
Le savoir, c’est le pouvoir.
Savoir pour prévoir, afin de pouvoir.

Exercice 2
Que fait ce programme MapReduce?

Opération Map: Entrée: document d


Pour chaque mot dans d faire:
Retourner (tri(mot), mot)

Opération Reduce: Entrée: (clé, [val1,....])


int x = 0;
Pour chaque val dans [val1,....] faire:
x++;
Si x>10 retourner (clé, x);

Exercice 3
Une grande chaine de distribution récupère auprès de ses magasins des fichiers log contenant les informations
relatives aux ventes. Le fichier log est composé de différents champs sous la forme suivante:
date | temps | magasin | produit | cout | paiement

Écrire en pseudo-code les tâches Map et Reduce qui permettent de déterminer:


• Le total de ventes par magasin.
• Le montant de la vente la plus élevé pour chaque magasin.
• Le nombre total des ventes et la valeur totale des ventes de tous magasins confondus.

Exercice 4
Une entreprise souhaite réaliser des statistiques sur son personnel. Le fichier contient les informations relatives
à chaque salarié (identifiant, age, sexe, adresse, statut, nbrenfants...). Écrire en pseudo-code les tâches Map et
Reduce qui permettent de déterminer:

• Pour chaque age, le salaire minimum, maximum et le nombre de personnes de cet age.

1
Exercice 5
Depuis l’apparition de la pandémie du Coronavirus, l’Institut Pasteur d’Algérie garde trace de tous les échantillons
reçus des différentes wilayas, dans le but d’étudier la propagation du virus. Une ligne de données est formatée
de la manière suivante:
id_echantillon, date_prise, wilaya, sexe_malade, age_malade, resultat

Ci-dessous un exemple d’un échantillon prit le 25/06/2020 dans la wilaya d’Oran d’un homme âgé de 35 ans.
Le résultat est négatif.
1652, 25/06/2020, Oran, H, 35, N

1. Que fait ce programme MapReduce?

Opération Map: Entrée: document d


Pour chaque Ligne L dans d faire:
Retourner (L[3], 1)
Opération Reduce: Entrée: (clé, [val1,....])
int x = 0;
Pour chaque val dans [val1,....] faire:
x++;
retourner (clé, x);

2. Écrire en pseudo-code le programme MapReduce permettant de calculer le nombre de personnes testées


positives/négatives par sexe.
Le résultat attendu est comme suit:
Sur tous les échantillons analysés, il y a eu:
345 femmes testées positivement et 546 testées négativement.
548 hommes testés positivement et 576 testés négativement.

3. Dérouler sur l’exemple suivant le résultat des différentes étapes: Map, Shuffle et Reduce de votre pro-
gramme.
1652, 25/06/2020, Oran, H, 35, N
1653, 25/06/2020, Alger, F, 85, P
1654, 26/06/2020, Annaba, F, 25, P
1655, 27/06/2020, Oran, H, 64, N
1656, 29/06/2020, Mostaganem, F, 74, P
1656, 29/06/2020, Alger, H, 58, P

Exercice 6
Le super marché ARVIS souhaite effectuer des statistiques sur l’ensemble des achats de ses clients sur les douze
derniers mois. L’entreprise possède plusieurs super-marchés en Algérie. A chaque passage de client à la caisse,
une ligne de log est sauvegardée dans un fichier. Cette ligne de log est formatée de la manière suivante :

• Le premier mot indique la date de l’achat au format JJ M M AAAA


• Le deuxième mot indique l’heure de l’achat au format HH M M SS
• Le troisième mot indique l’identifiant du caissier qui a prit en charge le client.
• Le reste de la ligne contient les achats. Chaque produit du panier est séparé par le caractère +.

Nous donnons comme exemple la ligne ci-dessous:


02_11_2019 12_32_10 132227 pain+lait+chocolat

Ceci indique que le caissier 132227 a encaissé un panier comportant les produits ”pain”, ”lait” et ”chocolat” le
02/11/2019 à 12h 32min 10sec.
Questions
• Écrire en pseudo-code le programme MapReduce permettant de calculer par tranche horaire d’une demi-
heure (toutes journées confondues) le nombre total de produits achetés dans la tranche. Le résultat
attendu est comme suit:
Sur les douze derniers mois, il y a eu:
54000 produits vendus dans la tranche horaire de 9h à 9h29
87548 produits vendus dans la tranche horaire de 9h30 à 9h59
...

• Écrire en pseudo-code le programme MapReduce permettant de calculer par tranche horaire d’une demi-
heure (toutes journées confondues) le produit le plus acheté dans la tranche.
• Dérouler sur l’exemple suivant le résultat des différentes étapes: Map, Shuffle et Reduce pour les deux
programmes.
02_11_2019 12_32_10 132227 pain+lait+chocolat
02_11_2019 12_45_25 132234 huile+sel+pain+yaourt+lait
03_11_2019 12_15_15 132154 fromage+lait+eau
03_11_2019 12_58_10 132227 lait+café+chips+salade
03_11_2019 15_12_10 132227 couscous+farine+levure

Indication: Il est autorisé d’utiliser dans votre pseudo-code des fonctions pré-définies comme par exemple:
extraire jour(date), extraire heure(horaire)... à condition qu’elles soient compréhensibles à partir de leur nom.

Exercice 7
Soit le fichier Twitter contenant un jeu de données représentant le graphe (orienté) des relations de suivi entre
plusieurs milliers d’utilisateurs de Twitter. Chaque ligne du fichier représente un utilisateur et son follower.
• Écrire en pseudo-code le programme MapReduce permettant de retourner les utilisateurs qui à la fois
”suivent” et ”sont suivis”.

• Dérouler sur l’exemple suivant le résultat des différentes étapes: Map, Shuffle et Reduce.
Exemple: Supposons le fichier d’entrée Twitter contenant:
A B
A C
B C
C D

Exercice 8
Soient les deux relations suivantes: R(A,B) et S(X,Y). Écrire en pseudo-code les opérations Map et Reduce
implémentant les requêtes suivantes:
• SELECT * FROM R WHERE A < 1;
• SELECT DISTINCT A , B FROM R;

• (SELECT * FROM R) INTERSECT ( SELECT X as A , Y as B FROM S);


• (SELECT * FROM R) UNION ( SELECT X as A , Y as B FROM S);
• SELECT A , count(*) FROM R GROUP BY A;
• SELECT R.A , R.B , S.Y FROM R INNER JOIN S on R.A = S.X;
Exercice 9
Le terme k-mer désigne généralement toutes les sous-chaı̂nes possibles de longueur k contenues dans une chaı̂ne.
En génomique informatique, les k-mers désignent toutes les sous-séquences possibles (de longueur k) à partir
d’une lecture obtenue par séquençage d’ADN.
Soit un fichier contenant un ensemble de séquençage d’ADN où chaque ligne est caractérisée par une suite de
lettres (sans espace). Nous souhaitons calculer le nombre de fois qu’apparait une suite de trois lettres. (nombre
de sous-séquences de longueur 3).
Exemple: Supposons le fichier d’entrée F contenant: ACACACAGT
Le résultat retourné est: (ACA,3) (CAC,2) (CAG,1) (AGT,1)
• Déterminer la clé et définir l’opération Map générant le couple (clé,valeur).
• Définir l’opération Reduce.

Exercice 10
Le PageRank est un algorithme utilisé par les moteurs de recherche pour la pondération et le classement des
pages web. Il utilise pour ses calculs la multiplication d’une matrice par un vecteur. Cette opération doit être
adaptée à l’environnement Big Data.
Rappel: Soit une matrice A de taille m × n et un vecteur V de taille n, le produit A × V est calculé comme
suit:
 
  v1
a11 a12 · · · a1n  v2 
 a21 a22 · · · a2n  V = . 
 
A= .
   .. 
.. .. .. 
 .. . . .  vn
am1 am2 · · · amn

 
a11 × v1 + a12 × v2 + · · · + a1n × vn
 a21 × v1 + a22 × v2 + · · · + a2n × vn 
A×V =
 
.. 
 . 
am1 × v1 + am2 × v2 + · · · + amn × vn
Nous supposons que le vecteur V est présent sur tous les noeuds (il n’est pas nécessaire de partitionner V ).
Écrire en pseudo-code les tâches Map et Reduce permettant la multiplication d’une matrice par un vecteur
en suivant les étapes ci-dessous:
1. Les matrices sont souvent creuses (beaucoup de 0) dans ce type de problème. Comment doit-on représenter
les données en entrées (Matrice A) pour optimiser le traitement?
2. Déterminer la clé et définir l’opération Map générant le couple (clé,valeur).
3. Définir l’opération Reduce.

Indication: Les indices des lignes et des colonnes vont vous êtes utiles.

Exercice 11
Soit le fichier Compétition Boxe contenant les résultats des différents combats d’une compétition de boxe.
Chaque ligne représente: (1) un boxeur (premier élément de la ligne) et (2) la liste des boxeurs qu’il a battu
(les autres éléments de la ligne). Par exemple, la ligne A,C,D exprime que le le boxeur A a battu les boxeurs
C et D.
• Écrire en pseudo-code le programme MapReduce permettant de retourner les boxeurs qui n’ont jamais
été battus.
• Dérouler sur l’exemple suivant le résultat des différentes étapes: Map, Shuffle et Reduce.
A,C,D
B,A,C
C,A,D
D,C
Exercice 12
Nous souhaitons étudier les variations de température dans une maison. Pour cela, chaque pièce est munie d’un
ou plusieurs capteurs pour mesurer la température. Ces capteurs retournent à des intervalles réguliers (toutes
les 5 minutes) la température de la pièce. Les informations retournées sont structurées comme suit:

id capteur|piece|horodatage|temperature

Ci-dessous un échantillon des données re-


Ecrire en pseudo-code un programme MapReduce qui: tournées:
1. Retourne le nombre de fois qu’un même capteur a enregistré cap1|cuisine|20210304 10:30|28
de fortes températures (>40°). cap1|cuisine|20210304 10:35|28.5
2. Retourne pour chaque pièce le jour et l’heure où a été enreg- cap2|cuisine|20210304 10:40|27.2
istré la température minimale. cap3|sdb|20210304 11:45|20.8
cap3|sdb|20210304 11:50|20.1

Vous aimerez peut-être aussi