MapReduce Ergebnisse scheinen auf 100 begrenzt zu sein?

8

Ich spiele mit Map Reduce in MongoDB und Python herum und habe eine seltsame Einschränkung erfahren. Ich versuche nur die Anzahl der "Buch" -Rekorde zu zählen. Es funktioniert, wenn es weniger als 100 Datensätze gibt, aber wenn es über 100 Datensätze geht, wird die Zählung aus irgendeinem Grund zurückgesetzt.

Hier ist mein MR-Code und einige Beispielausgaben:

%Vor%

MR-Ausgabe bei einer Aufzeichnungsanzahl von 99:

%Vor%

MR-Ausgabe, wenn der Datensatz 101 lautet:

%Vor%

Irgendwelche Ideen?

    
user1813867 10.11.2012, 02:56
quelle

2 Antworten

3

Ihre reduce -Funktion sollte die count -Werte zusammenfassen und nicht nur 1 für jeden Wert hinzufügen. Andernfalls kann die Ausgabe eines reduce nicht korrekt als Eingabe in ein anderes reduce verwendet werden. Versuchen Sie es stattdessen:

%Vor%     
JohnnyHK 10.11.2012, 03:55
quelle
2

Wenn die ausgegebenen Zahlen gleich oder mehr als 100 sind, werden 100 ausgegeben, um die Funktion zuerst zu reduzieren und zu verarbeiten:

{count: 100}

Dann bleibt nur 1 übrig, gesendet, um die Funktion zu reduzieren und zu verarbeiten:

{count: 1}

OK, das Ergebnis ist jetzt:

[{count: 100}, {count: 1}]

Und dann wird dies die Reduce-Funktion wieder aufrufen (sehr wichtig!). Weil foreach sum+=1 in deinem Code. Es gibt zwei Elemente im Array, das Ergebnis ist 2 .

Hinweis: Ссылка

    
Chien-Wei Huang 10.11.2012 04:47
quelle

Tags und Links