aggregate是聚合的意思
private static void arrgue1() {
SparkConf conf = new SparkConf().setAppName("hzy").setMaster("local");
JavaSparkContext sparkContext = new JavaSparkContext(conf);
//生成rdd,并且有三个分区
JavaRDD<Integer> rdd1 = sparkContext.parallelize(Arrays.asList(1, 2, 3, 4, 5, 6, 7), 3);
/**
*aggregate = 2 + (2 + 分区1)+(2+分区2)+(2+分区3)
第一个方法为每个分区内部的操作
第二个方法为每个分区互相操作
**/
Integer aggregate = rdd1.aggregate(2, new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer integer, Integer integer2) throws Exception {
return integer+integer2;
}
}, new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer integer, Integer integer2) throws Exception {
return integer+integer2;
}
});
System.out.println(aggregate);
}