2016-09-08 8 views
0

私はJavaのEclipseにspark-core_2.10 jarを使用しています。私はそれでreduceBykeyメソッドを見つけることができません! reduceの提案はすべてreducetreeReduceです。何がここに間違っているアイデア?スパークのreduceByKeyメソッドが見つかりません

+0

あなたのRDDはどのようなものが見えますか?タプルを含んでいますか?または単一の値、つまり 'RDD [String]'? –

+0

@YuvalItzchakov実際にはJavaRDD >でした。 PairRDDでしか動作しないことは気にしない – insomniac

答えて

2

PairRDD(タイプが自動的に推論されるScala、タイプを考慮しないPython、は実行時にのタプルが必要です)と比べて面倒です。 reduceByKeyはキーを知る必要があるので、それはdefined on JavaPairRDDクラスです。

あなたはJavaPairRDDRDD通常からJavaRDD#mapToPairを呼び出すことによって取得することができます。最初の要素が結果として得られるJavaPairRDDのキーとして取られるタプルを返すPairFunctionを提供します。

0

ポストコードとあなたのRDDの詳細reduceByKeyはPairRDDの一部です.PairRDDを作成した場合、reduceByKeyが表示されます。

1

reduceByKeyは、キー値のようなデータがあるRDDでのみ動作します。これは、pairRDDと呼ばれます。

上記の答えに加えて、あなたのデータセットが正しい限り、JavaのScalaで作業しても問題はありません。

ReduceByKeyは、以下の方法でタプルデータに作用します。

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

出力に含まは次のとおりです。 (1,5) (4,2)

関連する問題