Dans leur article de 2004 [1], ils ne s'embarrassent pas avec ça.
Attention entre le map-reduce tel qu'on l'utilise en distribué et les map/reduce/fold parallèles il y a quand même un gros fossé. Si l'inspiration vient clairement des langages fonctionnels, et ca n'a jamais été caché vu le nom..., en pratique techniquement ce qui fait que ca marche ce sont tous les à côté. Un map-reduce c'est basiquement un gros tri-distribué suivi d'un groupBy que tu peux tordre dans tout les sens, dans lequel le étape de map & reduce sont "embarassingly parrallel". Toute la mécanique intermédiaire n'existe pas dans le map/reduce/fold au sens fonctionnel.
Autrement c'est étonnant que le par(map|reduce|fold) semblent émerger maintenant sur OCaml/Haskell & autre alors que les collections parallèles et le fork/join sont dispo depuis super longtemps dans Scala/Groovy, et sont dispo dans Java 8.
[^] # Re: Pour paralleliser du code en OCaml, c'est par ici:
Posté par ckyl . En réponse à la dépêche Sortie du livre « Parallel and Concurrent Programming in Haskell ». Évalué à 4.
Attention entre le map-reduce tel qu'on l'utilise en distribué et les map/reduce/fold parallèles il y a quand même un gros fossé. Si l'inspiration vient clairement des langages fonctionnels, et ca n'a jamais été caché vu le nom..., en pratique techniquement ce qui fait que ca marche ce sont tous les à côté. Un map-reduce c'est basiquement un gros tri-distribué suivi d'un groupBy que tu peux tordre dans tout les sens, dans lequel le étape de map & reduce sont "embarassingly parrallel". Toute la mécanique intermédiaire n'existe pas dans le map/reduce/fold au sens fonctionnel.
Autrement c'est étonnant que le par(map|reduce|fold) semblent émerger maintenant sur OCaml/Haskell & autre alors que les collections parallèles et le fork/join sont dispo depuis super longtemps dans Scala/Groovy, et sont dispo dans Java 8.