Database Reference
In-Depth Information
[{name:'Eric', count:105}, {name:'Jim', count:215}, ...]
Das ist nicht unbedingt notwendig, aber praktisch. Weil Reducer Daten an weitere
Reducer übergeben können, wissen Sie nicht, ob die Daten bei einem reduce -Aufruf
von einem Map-Ergebnis, einem Reduce-Ergebnis oder von beiden stammen. Fol-
gen sie hingegen dem gleichen Objekt-Muster, spielt das keine Rolle, weil sie immer
gleich sind! Anderenfalls muss Ihre reduce -Funktion immer den Typ der empfange-
nen Daten prüfen und entsprechende Entscheidungen treffen.
In unserem Mapreduce zur Bestimmung der Zimmer-Kapazitäten ersetzen
wir "inputs":"rooms" durch den folgenden Block (der mit einem Komma en-
den muss):
"inputs":{
"bucket":"rooms",
"key _ filters":[["string _ to _ int"], ["less _ than", 1000]]
},
Zwei Dinge sind interessant: Die Query ist wesentlich schneller (weil wir nur
die benötigten Werte verarbeitet haben) und die Ergebnismenge ist kleiner
(weil wir nur die ersten 10 Etagen berücksichtigen).
Mapreduce ist ein mächtiges Werkzeug, um Daten zu bündeln und eine all-
umfassende Analyse dieser Daten durchzuführen. Wir werden dieser Idee in
diesem Buch immer wieder begegnen, doch das Konzept ist immer das glei-
che. Riak optimiert die grundlegende Form des Mapreduce ein wenig, indem
es das Konzept um Links erweitert.
Link-Walking mit Mapreduce
Gestern haben wir Sie in das Link-Walking eingeführt. Heute wollen wir das
gleiche in Verbindung mit Mapreduce tun. Der query-Abschnitt hat neben
map und reduce noch einen zusätzlichen Wert: link .
Wir kehren noch einmal zu unserem cages -Bucket des gestrigen Hundepen-
sion-Beispiels zurück und schreiben einen Mapper, der nur Zwinger 2 (in
dem Ace the dog sitzt) zurückgibt.
$ curl -X POST -H "content-type:application/json" \
http://localhost:8091/mapred --data @-
{
"inputs":{
"bucket":"cages",
"key _ filters":[["eq", "2"]]
},
"query":[
{"link":{
"bucket":"animals",
 
Search WWH ::




Custom Search