2013-04-23 10 views
5

Ist es möglich, Werte mit demselben Schlüssel auf verschiedenen Reduzierern zu verarbeiten? von allen Mappern habe ich Daten mit gleichem Schlüssel und möchte sie mit verschiedenen Reduzierungen verarbeiten? meine Verwirrung ist, dass das Buch sagt, dass alle Werte mit dem gleichen Schlüssel zur gleichen Minderer gehen ...Gleiche Taste verschiedene Reduzierungen (HADOOP)?

mapper1(k1,v1),mapper2(k1,v2),mapper3(k1,v3) and so on... 

ich möchte nicht alle Daten zu gleichen Minderer ... es wie,

reducer1(k1,v1),reducer2(k1,v2).... 
sein sollte

und können sagen, reducer1 sum1 und reducer2 produzieren sum2 zu produzieren, und ich will, dass

sum=sum2+sum1 

wie sollte ich das tun?

+0

Gibt es einen Grund, warum Sie die oben mit einem Kombinierer cant do .. und dann die Ausgaben der Kombinierer im Minderer zusammenfassen? – Suchet

+0

in der Annahme, dass ich sehr große Daten habe (sagen wir, ich habe riesige Anzahl von Zeilen in einer Matrix und am Ende möchte ich Summe aller Elemente), kann ich dies für einen Split in Combiner jetzt zusammenfassen, wenn die Summe als wollen ein ganzes ich muss Ausgabe aller Kombinierer in einen reduzieren (i dnt 9 anderen Weg), was zu einem sehr langsamen Prozess führt ... – Divyendra

+0

Sie profitieren nicht von der verteilten Natur von Hadoop. Partitionieren Sie Ihre Daten so, dass mehrere Mapper gleichzeitig an Ihren Eingabedateien arbeiten. Probleme wie diese sind trivial. – Suchet

Antwort

4

Daten mit demselben Schlüssel werden immer zum selben Reduzierer gesendet. Sie können jedoch den gewünschten Schlüssel auswählen. Wenn Sie möchten, dass sie zu verschiedenen Reduzierungen wechseln, wählen Sie einfach andere Schlüssel aus.

Wenn Sie eine zusätzliche Kombination basierend auf der Ausgabe Ihrer Reduzierungen erstellen möchten, müssen Sie einen anderen MapReduce-Job ausführen, wobei die Ausgabe des ersten Jobs als Eingabe für die nächste Anwendung verwendet wird. Dies kann schnell hässlich werden, also sollten Sie sich Cascading, Pig oder Hive ansehen, um die Dinge zu vereinfachen.

+0

Problem ist nicht mit Mappern ... sie werden mehrere sein, aber das ist, wenn ich die Gesamtsumme will dann wäre ich gezwungen, eine Reduzierung zu verwenden, und in diesem Fall würde eine Reduzierung für alle Mapper-Ausgänge die Computer langsam machen ... PLZ korrigiere mich wenn ich falsch liege? - – Divyendra

+0

Nein, Sie haben Recht. Die Verwendung von nur einem Reduzierer ist langsam. Wenn Sie jedoch möchten, dass Ihre endgültige Antwort eine Kombination aus den Ergebnissen verschiedener Reduzierungen ist, müssen Sie einen anderen MR-Job ausführen. Und wenn Sie einen einzigen Wert als Ergebnis haben möchten, müssen Sie nur einen Reduzierer an einem bestimmten Punkt haben. Versuchen Sie einfach, die an diesen Reduzierer gesendeten Daten so klein wie möglich zu machen. –

Verwandte Themen