Académique Documents
Professionnel Documents
Culture Documents
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.
• 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:
>db.movies_result.find();
Exercices
Exercice 1:
Insertion de données :
db.text_data.insertMany([
{ content: "NoSQL databases like MongoDB and Cassandra are scalable." }]);
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 },
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([
]);
Dans cet exercice, regrouper les produits par catégories à l'aide de la fonction de map-reduce.
-----------------------------------------------------------------------------------------------------------------
Exercice4 :
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 .