2016-12-07 3 views
0

Wenn wir .reduce(max) verwenden, dann erhalten wir den größten Schlüssel in der gesamten RDD. Ich weiß, dass dieses Reduzieren auf allen Partitionen funktioniert und dann die von jeder Partition gesendeten Elemente reduziert. Aber wie können wir den größten Schlüssel jeder Partition zurückbekommen? Schreibe eine Funktion für .mapPartitions()?Wie erhält man den größten Schlüssel jeder Spark-Partition?

Antwort

2

Sie können:

rdd.mapParitions(iter => Iterator(iter.reduce(Math.max))) 

oder

rdd.mapPartitions(lambda iter: [max(iter)]) 

Verwendung dieses mit DStream.trasform In Streaming.

+0

Vielen Dank und ich habe eine andere Frage. Wenn es drei größte Schlüssel gibt und diese gleich sind, dann erhalten rdd.mapPartitions (lambda iter: [max (iter)]) nur 1 zurück, also wie können wir diese 3 größten Schlüssel zusammen bekommen? –

Verwandte Themen