我有一个spark java程序,其中带有mapValues步骤的groupByKey已完成,并返回一个PairRDD,其值为所有输入rdd值的Iterable
。 我已经读过,用mapValues代替groupByKey处的reduceByKey会带来性能上的提升,但我不知道如何在这里应用reduceByKey
来解决我的问题。如何使用reduceByKey替换groupByKey以作为Spark java中的Iterable值返回?
具体而言,我有一个输入对RDD,其类型为Tuple5
。在groupByKey和mapValues转换之后,我需要获得一个Key-Value对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
_我已经读过,用mapValues代替groupByKey中的reduceByKey会带来性能增益_ - 你看错了。 – zero323