2016-09-08 4 views
0

nicht finden Ich verwende spark-core_2.10 jar auf meiner Java-Eclipse. Ich kann keine reduceBykey Methode darin finden! Alles, was ich als Vorschlag für reduce bekommen, sind reduce und treeReduce. Irgendeine Idee, was hier falsch ist?kann die reduceByKey-Methode auf Spark

+0

Was macht Ihr RDD aussehen? Enthält es ein Tupel? Oder ein einzelner Wert, d.h. 'RDD [String]'? –

+0

@YuvalItzchakov tatsächlich war es JavaRDD >. Egal, es funktioniert nur mit PairRDD – insomniac

Antwort

2

In Java gibt es mehr Ärger mit PairRDD (im Vergleich zu Scala, wo die Typen automatisch geschlossen werden, oder Python, die nicht Typen betrachten ist und erwartet Tupeln in Runtime). Als reduceByKey muss der Schlüssel wissen, ist es defined on JavaPairRDD Klasse.

Sie können durch Aufruf JavaRDD#mapToPairJavaPairRDD von normalenRDD bekommen. Sie geben PairFunction zurück, das ein Tupel zurückgibt, in dem das erste Element als Schlüssel in dem resultierenden JavaPairRDD übernommen wird.

0

Post Sie Code und Sie RDD Details reduceByKey ist ein Teil von PairRDD. Wenn Sie die PairRDD erstellt haben dann können Sie die reduceByKey sehen.

1

reduceByKey funktioniert nur auf RDD wo gibt es Schlüssel-Wert wie Daten, sie heißen pairRDD.

Hinzufügen zu den obigen Antworten, ist es egal, ob Sie an Scala von Java arbeiten, solange Ihre Daten korrekt sind.

Die ReduceByKey wird auf Tuple-Daten in der folgenden Weise arbeiten.

val l1 = List((1,2), (1,3), (4,2)) 
val l1RDD = sc.parallelize(l1) 
l1RDD.reduceByKey(_+_) 

ouput ist: (1,5) (4,2)

Verwandte Themen