0% ont trouvé ce document utile (0 vote)
24 vues3 pages

Importation Des Données: Consignes

Le document décrit un travail pratique sur l'utilisation de MapReduce avec MongoDB dans le cadre d'un module sur les bases de données NoSQL. Les étudiants doivent créer une base de données, importer des collections de films et de commentaires, puis effectuer des requêtes MapReduce pour analyser les données. Le rapport doit être soumis sous forme de PDF avec des instructions précises sur la structure et le contenu.

Transféré par

Fatimazahra Blg
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)
24 vues3 pages

Importation Des Données: Consignes

Le document décrit un travail pratique sur l'utilisation de MapReduce avec MongoDB dans le cadre d'un module sur les bases de données NoSQL. Les étudiants doivent créer une base de données, importer des collections de films et de commentaires, puis effectuer des requêtes MapReduce pour analyser les données. Le rapport doit être soumis sous forme de PDF avec des instructions précises sur la structure et le contenu.

Transféré par

Fatimazahra Blg
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 3 : MapReduce avec MongoDB Master : Systèmes Embarqués & Services Numériques

Année : 2023-2024
Module : Bases de données NoSQL
Prof. : Yasmine LAMARI - [email protected]

Consignes :

Un rapport de ce travail pratique doit être préparé en binôme d’étudiants ou en monôme, et


soumis dans la plateforme Google Classroom associée à ce module, avant la date de la
prochaine séance de travail pratique.
Le rapport doit être bref, clair et concis. Il doit également inclure les étapes de réalisation du
travail pratique expliquées si nécessaire à l’aide des captures d’écran claires.
Le document électronique à rendre doit respecter la nomenclature suivante :
− Type : PDF
− Nom : NomFamilleEtudiant1_NomFamilleEtudiant2_TPM3

1. Importation des données


Le but de cette première manœuvre est de calculer le nombre de commentaires par film,
et afficher le titre du film avec un total des commentaires reçus. On espère arriver à un
affichage qui ressemble à ce qui suit :

{
"_id" : ObjectId("573a13aaf29313caabd22abb"),
"value" : {
"titre" : "School of Rock",
"num_comments_tp" : 144
}
}

Vu que, la méthode mapReduce() de MongoDB ne prend qu’une seule collection en


entrée, nous devons, donc créer une collection commune qui contient à la fois les
documents des films et les documents des commentaires. En effet, les informations dont
on a besoin pour cette requête résident sur deux collections, mflix_movies et
mflix_comments.
Le lien entre les deux collections est l’identificateur du film. Dans la collection
mflix_movies : "_id", et dans la collection mflix_comments : "movie_id".

1.1. Créez une base de données, intitulée tpm3,


1.2. Importez dans une seule collection, intitulée joinCollection, les deux
collections de données suivantes :
Tableau 1 2. Sample Mflix Dataset [https://docs.atlas.mongodb.com/sample-data/sample-mflix/#std-
label-sample-mflix]

Intitulé de la Type Description


collection
mflix_movies Text Contient des informations sur les films, comme l'année
de sortie, le réalisateur et les critiques.
mflix_comments Text Contient des commentaires associés à des films
spécifiques.
1.3. Vérifiez qu’une seule collection de données a été créé.
> show collections
joinCollection

1
TP 3 : MapReduce avec MongoDB Master : Systèmes Embarqués & Services Numériques
Année : 2023-2024
Module : Bases de données NoSQL
Prof. : Yasmine LAMARI - [email protected]

2. Première requête MapReduce


Pour calculer le nombre de commentaires par film, procédez comme suit :

2.1. Implémentez une fonction mapJoin.


− Cette fonction ajoutera un champ qui représentera le type du document reçu
(this.type_tp) pour pouvoir distinguer entre un document de type film et un autre de
type commentaire.
− Ensuite, elle retournera des paires clés-valeurs intermédiaires, où la clé sera l’id du film
et la valeur sera le document correspondant ( emit(this.movie_id, this)).

La fonction de Map est donnée ci-dessous:


var mapJoin = function() {
//le document fait-il partie de "movies"?
if (this.title) {
// Oui, ajoutons-lui son type.
this.type_tp="movie";
emit(this._id, this);
}
else {
// Non, c'est un commentaire. Ajoutons-lui son type.
this.type_tp="comment";
emit(this.movie_id, this);
}
};

2.2. Implémentez une fonction reduceJoin.


− Cette fonction travaillera sur une clé (_ id de film) à la fois. Elle va parcourir l’ensemble
des valeurs associées à cette clé.
− Ensuite, grâce aux types des documents dans la liste de valeurs ( this.type_tp), elle va
récupérer le titre et en même temps incrémenter un compteur de commentaires.
− Elle retournera des paires clés-valeurs, où la clé sera l’id du film et la valeur sera un
objet result, qui aura deux attributs : result.titre et num_comments_tp.

La fonction de Reduce est donnée ci-dessous:


var reduceJoin = function(id, items) {
var cpt = 0, result = new Object();
//cherchons le titre dans cette liste
for (var idx = 0; idx < items.length; idx++) {
if (items[idx].type_tp=="movie") {
result.titre = items[idx].title;
}
//comptons le nombre de commentaires
if (items[idx].type_tp=="comment") {
cpt = cpt+1;
}
}
result.num_comments_tp = cpt;
return result;
};

2
TP 3 : MapReduce avec MongoDB Master : Systèmes Embarqués & Services Numériques
Année : 2023-2024
Module : Bases de données NoSQL
Prof. : Yasmine LAMARI - [email protected]

2.3. Exécutez ce traitement MapReduce, en sauvegardant le résultat dans une


nouvelle collection, intitulée results.
db.joinCollection.mapReduce(mapJoin, reduceJoin, {out: "results"});

2.4. Affichez le résultat de ce traitement MapReduce. Que remarquez-vous ?


db.results.find();

2.5. Ce traitement MapReduce n’est pas optimisé, proposez des améliorations.

3. Requêtes avec MapReduce


Exprimez des requêtes pour les recherches suivantes à l’aide du framework MapReduce:

3.1. Calculer le nombre de films par année de production (équivalant à « select


count(*) from joinCollection group by year »).
3.2. Calculer le nombre de films pour chaque genre (le champ "genres").
3.3. Pour chaque genre, déterminer toutes les notes d’évaluations
("imdb"."rating") de ses films.
3.4. (Optionnelle) Pour chaque genre, calculer la moyenne des notes
d’évaluations de ses films ((∑ "imdb". "rating") / nombre de notes).
(Indice : utiliser la méthode finalize(), Doc : mapReduce — MongoDB
Manual).

Vous aimerez peut-être aussi