2016-06-19 6 views
1

Ich weiß, dass es eine Gruppe von Implementierungen in Spark gibt, aber ich versuche zu verstehen, wie sie funktionieren. Ich schaute auf die source code.Implementierungsgruppe mit Karte reduzieren

Ich verstehe nicht genau, ob es nur die Schlüssel abbildet oder es auch eine Reduktionsoperation durchführt.

Wie würden Sie eine Gruppe implementieren, indem Sie map/reduce verwenden?

Antwort

1

Die Frage ist irgendwie kompliziert. Aber hier ist ein Stich auf Ihre Absicht.

Beliebige aggregate Funktion benötigt erfordern eine reduce Bühne. Die groupBy ist eine solche Aggregatfunktion. In der Tat groupBy ist im Grunde die teuerste Familie von Aggregatfunktionen.

AFA der Code: hier zeigt es deutlich:

groupByKey(new HashPartitioner(numPartitions)) 

Beachten Sie, dass die HashPartitionerimmer ein shuffle führt: so dass Sie einen vollständigen reducer-side (in der Karte/reduzieren Lingo) Betrieb zu bekommen.

Update Das OP fragte nach weiteren Details, wie die reduce funktioniert.

in ähnlicher Weise die reduce to Map-Reduce kombiniert die Ergebnisse von der map Stufe gemäß der konfigurierten Partitioner -, die den Schlüssel für jeden Datensatz auswertet und verteilt an die entsprechende Trennwand nach dem Schlüssel. Das ist die shuffle Phase.

Dann wird die reducer Logik wäre die angegebene aggregate Betrieb anzuwenden - und möglicherweise zusätzliche having (dh Filter auf den Aggregatzuständen basiert) und sorting (wenn sie local nicht ‚total` Ordnung)

+0

Was bedeutet die Verringerung machen? – Lee

+0

@Lee Ich habe die Antwort aktualisiert, um mehr darüber zu erfahren, wie "reduce" auf Spark funktioniert. – javadba

Verwandte Themen