0% ont trouvé ce document utile (0 vote)
166 vues4 pages

Exercices Pratiques MapReduce

Transféré par

mariemltifi61
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
166 vues4 pages

Exercices Pratiques MapReduce

Transféré par

mariemltifi61
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP : MapReduce

MapReduce est un paradigme de traitement de données afin de condenser des grands volumes
de données en résultats agrégés utiles. En termes très simples, la commande MapReduce prend
deux entrées primaires, la fonction de mappage et la fonction de réducteur.

Un Mapper débutera par la lecture d'une collection de données pour construire une map avec
les champs que nous souhaiterons traiter. Puis cette paire clé, valeur est introduite dans un
réducteur, qui traitera les valeurs.

Figure1 : Paradigm de mapReduce


>db.collection.mapReduce(
function() {emit(key,value);}, //map function
function(key,values) {return reduceFunction}, //reduce function
{
out: nom-variable,
query: document,
sort: document,
limit: number
}
)

• map: Fonction javascript qui mappe une valeur à une clé et émet la paire clé/valeur
• reduce: Fonction javascript qui réduit ou regroupe tous les documents ayant la même
clé
• out: Spécifie l'emplacement du résultat de la spécifies de la map-reduce
• query: Précise les critères de sélection en option pour sélectionner les documents
• sort: Précise les critères de tri en option
• limit: Indique le nombre maximal option de documents à retourner

Exemple:

Affichage du nombre des films en base mongo par genre:

>var map =function() {emit(this.genre,1);};

>var reduce = function(key, values) { return Array.sum(values)};

>var count = db.movies.mapReduce(map, reduce, {out: "movies_result"});

>db.movies_result.find();

Exercices
Exercice 1:

Insertion de données :

db.text_data.insertMany([

{ content: "Hello world, this is a sample text for word count." },

{ content: "MongoDB is a popular NoSQL database." },

{ content: "NoSQL databases like MongoDB and Cassandra are scalable." }]);

Figure2 : Exemple de MapReduce

Dans cet exercice, compter l'occurrence de chaque mot dans la collection crée à l'aide de la
fonction de map-reduce.

Exercice 2:

Insertion de données :
db.student_scores.insertMany([
{ student_id: 1, score: 85 },

{ student_id: 1, score: 90 },

{ student_id: 2, score: 75 },

{ student_id: 2, score: 80 },

{ student_id: 3, score: 95 },

{ student_id: 3, score: 88 }]);

Dans cet exercice, calculer le score moyen de chaque élève à l'aide de la fonction de map-
reduce.

Exercice 3:

Insertion de données :

db.products.insertMany([

{ name: "Laptop", category: "Electronics" },

{ name: "Smartphone", category: "Electronics" },

{ name: "T-shirt", category: "Clothing" },

{ name: "Headphones", category: "Electronics" },

{ name: "Jeans", category: "Clothing" },

{ name: "TV", category: "Electronics" }

]);

Dans cet exercice, regrouper les produits par catégories à l'aide de la fonction de map-reduce.

-----------------------------------------------------------------------------------------------------------------

Exercice4 :

Créer la collection orders ci-après:

db.orders.insertMany([

{ _id: 1, cust_id: "Ant O. Knee", ord_date: new Date("2020-03-01"), price: 25, items: [ { sku: "oranges", qty: 5, price: 2.5 }, { sku:
"apples", qty: 5, price: 2.5 } ], status: "A" },

{ _id: 2, cust_id: "Ant O. Knee", ord_date: new Date("2020-03-08"), price: 70, items: [ { sku: "oranges", qty: 8, price: 2.5 }, { sku:
"chocolates", qty: 5, price: 10 } ], status: "A" },

{ _id: 3, cust_id: "Busby Bee", ord_date: new Date("2020-03-08"), price: 50, items: [ { sku: "oranges", qty: 10, price: 2.5 }, { sku:
"pears", qty: 10, price: 2.5 } ], status: "A" },
{ _id: 4, cust_id: "Busby Bee", ord_date: new Date("2020-03-18"), price: 25, items: [ { sku: "oranges", qty: 10, price: 2.5 } ], status:
"A" },

{ _id: 5, cust_id: "Busby Bee", ord_date: new Date("2020-03-19"), price: 50, items: [ { sku: "chocolates", qty: 5, price: 10 } ], status:
"A"},

{ _id: 6, cust_id: "Cam Elot", ord_date: new Date("2020-03-19"), price: 35, items: [ { sku: "carrots", qty: 10, price: 1.0 }, { sku:
"apples", qty: 10, price: 2.5 } ], status: "A" },

{ _id: 7, cust_id: "Cam Elot", ord_date: new Date("2020-03-20"), price: 25, items: [ { sku: "oranges", qty: 10, price: 2.5 } ], status: "A"
},

{ _id: 8, cust_id: "Don Quis", ord_date: new Date("2020-03-20"), price: 75, items: [ { sku: "chocolates", qty: 5, price: 10 }, { sku:
"apples", qty: 10, price: 2.5 } ], status: "A" },

{ _id: 9, cust_id: "Don Quis", ord_date: new Date("2020-03-20"), price: 55, items: [ { sku: "carrots", qty: 5, price: 1.0 }, { sku:
"apples", qty: 10, price: 2.5 }, { sku: "oranges", qty: 10, price: 2.5 } ], status: "A" },

{ _id: 10, cust_id: "Don Quis", ord_date: new Date("2020-03-23"), price: 25, items: [ { sku: "oranges", qty: 10, price: 2.5 } ], status:
"A" }

])

Dans cet exercice, créer la fonction map-reduce pour la collection orders afin de regrouper les
clients par cust_id puis calculer la somme du prix pour chaque cust_id .

Vous aimerez peut-être aussi