私はspark javaプログラムを持っています。ここでは、mapValuesステップを持つgroupByKeyが実行され、すべての入力rdd値のIterable
という値を持つPairRDDが返されます。 groupByKeyの代わりにreduceByKeyをmapValuesに置き換えるとパフォーマンスが向上しますが、ここで問題にreduceByKey
を適用する方法はわかりません。spark javaでIterable値として返すためにreduceByKeyとgroupByKeyを置き換える方法は?
具体的には、タイプTuple5
の値を持つ入力ペアRDDがあります。 groupByKeyとmapValuesの変換の後、値が入力値の反復可能である必要があるキーと値のペアRDDを取得する必要があります。
JavaPairRDD<Long,Tuple5<...>> inputRDD;
...
...
...
JavaPairRDD<Long, Iterable<Tuple5<...>>> groupedRDD = inputRDD
.groupByKey()
.mapValues(
new Function<Iterable<Tuple5<...>>,Iterable<Tuple5<...>>>() {
@Override
public Iterable<Tuple5<...>> call(
Iterable<Tuple5<...>> v1)
throws Exception {
/*
Some steps here..
*/
return mappedValue;
}
});
reduceByKey
を使用して上記の変換を行う方法はありますか?
「ここのいくつかのステップ」とは何ですか?あなたはそれを減らすための論理が必要になります。 – philantrovert
'mapValues'関数では、実際には' Tuple5'内のキーに基づいて各値をソートしています。私はそれがここでは関係ないと思ったので、私はそれらを含めなかったのです。 – Vishnu
_私は、groupByKeyの代わりにreduceByKeyをmapValuesに置き換えると、パフォーマンスが向上しますが、間違って読んだことを読んでいます。 – zero323