reduceByKey和combineByKey使用Function2来聚合相同键的计数。由于Function2仅传递了键的当前计数,因此如何访问与reduceByKey和combineByKey一起使用的实际两个键对象?
答案 0 :(得分:0)
将 Tuple2 中的两个键合并,然后您就可以轻松执行reduceByKey和combineByKey
以下是示例
JavaRDD<Tuple3<String,String,Integer>> data = { .... };
JavaPairRDD<Tuple2<String, String>, Integer> map = data.mapToPair(new PairFunction<Tuple3<String,String,Integer>, Tuple2<String,String>, Integer>() {
@Override
public Tuple2<Tuple2<String, String>, Integer> call(Tuple3<String, String, Integer> t) throws Exception {
return new Tuple2<Tuple2<String, String>, Integer>(new Tuple2<String, String>(t._1(),t._2()),t._3());
}
});
map.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer v1, Integer v2) throws Exception {
return v1+v2;
}
});
答案 1 :(得分:0)
我找到了解决方案。谢谢,Kaushal和Justin,以前的回复。