1. 程式人生 > >spark aggregateByKey使用java版

spark aggregateByKey使用java版

RDDaggregateByKey操作官方api:

aggregateByKey(U zeroValue, Function2<U,V,U> seqFunc, Function2<U,U,U> combFunc)

U zeroValue為定義初始資料;

Function2<U,V,U> seqFunc中第一個U是初始資料的U,v是傳入資料,第二個U是返回資料;

Function2<U,U,U> combFunc,第一個U是累計資料,第二個U是傳入資料,第三個U是返回資料。

(個人理解,不對請指正。)

同時計算sum和count的樣例程式碼如下:

JavaPairRDD<String, String> allMsg= 。。。

      JavaPairRDD<String,Tuple2<Double,Integer>> result = allMsg.aggregateByKey(new Tuple2<Double,Integer>(0.0d,0),new Function2<Tuple2<Double,Integer>, String, Tuple2<Double,Integer>>(){@Overridepublic Tuple2 call(Tuple2<Double,Integer> v1, String v2) {return new
Tuple2<>(v1._1() + Double.parseDouble(v2) , v1._2() + 1);                }           }, new Function2<Tuple2<Double,Integer>, Tuple2<Double,Integer>, Tuple2<Double,Integer>>(){@Overridepublic Tuple2<Double,Integer> call(Tuple2<Double,Integer> v1, Tuple2<Double,Integer>
v2) {return new Tuple2<>( v1._1() + v2._1() , v1._2() + v2._2());                }        });