Tutoriel pour implémenter un algorithme de MapReduce en JavaScript classique et ES6
Par Marc Autran
Le 2016-09-15 18:10:59, par autran, Rédacteur
Bonjour à tous,
Je vous propose un tutoriel pour apprendre à implémenter un algorithme de MapReduce avec la technologie JavaScript. Il s'agit d'un cas d'école qui offre un aperçu de ce que l'on peut faire avec ce langage dans le domaine du Big Data.
Implémentation d'un algorithme de MapReduce en JavaScript classique et ES6
Merci de laisser vos commentaires !
Retrouvez tous nos cours et tutoriels pour apprendre le JavaScript !
Je vous propose un tutoriel pour apprendre à implémenter un algorithme de MapReduce avec la technologie JavaScript. Il s'agit d'un cas d'école qui offre un aperçu de ce que l'on peut faire avec ce langage dans le domaine du Big Data.
Merci de laisser vos commentaires !
Retrouvez tous nos cours et tutoriels pour apprendre le JavaScript !
-
danielhagnoulRédacteur
Hier soir, j'ai publié un billet de blog utilisant ta version ES2015 de cet algorithme : kNombreMots() retourne le nombre de mots et, dans l'ordre alphabétique, le nombre de chaque motle 15/09/2016 à 21:33 -
autranRédacteurBien vu Daniel !!!
Je vais creuser ton blog, ça m'a l'air passionnant.
A bientôt sur l'un de tes fils.
Marcle 16/09/2016 à 0:35 -
bvdigCandidat au ClubBonjour à tous,
Voici mon implémentation avec un peu de retardCode : 1
2
3
4
5
6
7
8
9
10
11
12
13countWords = str => { const arr = str.split(' ') const obj = arr.sort().reduce((acc, word, index) => { if (word !== 'se') acc[word] = ++acc[word] || 1 return acc }, {}) return Object.entries(obj) } console.log(countWords('voiture la le elle de elle la se la maison voiture')) //[['de', 1], ['elle', 2], ['la', 3], ['le', 1], ['maison', 1], ['voiture', 2]]
Bonne journée
Benjaminle 22/05/2019 à 9:30 -
LoralinaMembre éclairéBonjour,
C'est intéressant.
J'ai réfléchi à quelques optimisations sur la vitesse d'exécution :
1) ++acc[word] est à remplacer par acc[word]+1.
2) J'observe un traitement plus rapide en remplaçant Object.entries par une construction plus explicite du tableau (mais on perd en concision du code, à voir ce que l'on privilégie).
Code : 1
2
3
4
5
6
7
8
9
10
11
12
13const countWords2 = str => { const obj = str.split(' ').sort().reduce((acc, word) => { if (word !== 'se') { acc[word] = acc[word]+1 || 1; } return acc; }, {}); const arr = []; for(const i in obj) { arr[arr.length] = [i, obj[i]]; } return arr; };
Code : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20const countWords3 = str => { const arr = []; const obj = str.split(' ').reduce((acc, word) => { if (word !== 'se') { if (acc[word] !== undefined) { acc[word]++; } else { acc[word]=1; arr[arr.length]=word; } } return acc; }, {}); arr.sort(); for(let i=arr.length-1 ; i>=0 ; i--) { arr[i] = [arr[i], obj[arr[i]]]; } return arr; };
le 22/05/2019 à 16:49