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 HashPartitioner
immer 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)
Was bedeutet die Verringerung machen? – Lee
@Lee Ich habe die Antwort aktualisiert, um mehr darüber zu erfahren, wie "reduce" auf Spark funktioniert. – javadba