2017-10-13 19 views
0

Auparavant, j'ai demandé quel était le cas d'utilisation pour passer une liste de clés à la fonction de réduction de CouchDB; la réponse (https://stackoverflow.com/a/46713674/3114742) mentionne deux cas d'utilisation potentiels:Est-ce que toutes les implémentations de MapReduce prennent une entrée de paramètre key dans la fonction de réduction?

  1. Du point de vue de la conception que vous pouvez travailler avec des clés émises par une fonction de carte
  2. Vous pouvez calculera quelque chose basé sur l'entrée clé (comment souvent une clé particulière apparaît)

Toutes les implémentations de MapReduce prennent-elles un tableau de clés en entrée des fonctions de réduction? CouchDB garde spécifiquement la trace du document original qui produit une clé. à savoir l'entrée à une CouchDB réduire la fonction:

function(keys, values, rereduce) {...} 

Les touches arg ressemble à ceci: [[key1,id1], [key2,id2], [key3,id3]].

à savoir Couch garde la trace de l'entité qui a émis la clé en raison de la fonction de la carte, même dans la diminution de la fonction. Est-ce que les autres implémentations de MapReduce gardent une trace de cette information? Ou est-ce spécifique à CouchDB ...

Répondre

0

Toutes les implémentations de mapreduce n'ont pas la même structure que dans couchdb. Par exemple, dans mongodb mapreduce, il n'y a qu'une seule clé et une liste de valeurs différente de la table db. Ainsi, toutes les clés émises par la fonction de carte sont groupées et transmises comme une seule clé et une liste de valeurs pour réduire la fonction.

Exemple:

emit(1,10) 
emit(1,20) 

seront regroupées à

reduce(1,[10,20])