object Demo {
def main(args: Array[String]): Unit = {
val conf = new ConfigProperties("xxx") // 测试
val sparkConf = new SparkConf().setAppName("app.name").setMaster("local") // 测试
val sc = new SparkContext(sparkConf)
val rdd = sc.parallelize(List(1,2,3,4,5,6,7,8), 2)
/**
* 第一分区: 1 2 3 4
* 第二分区: 5 6 7 8
* 首先SqpOp会在每个分区上执行 :初始值是 5
* 第一个分区:
* 5 1 结果6
* 6 2 结果8
* 8 3 结果11
* 11 4 结果15
* 第二分区:
* 计算过程和第一个分区是一样的,结果是:31
* 然后是全局CombOp处理合并每个分区的结果:初始值是 5
* 5 + 15 + 31 = 51
* 需要注意的是SeqOp和CombOp都要对初始值做处理
*/
val value = rdd.aggregate(5)(seqOp(_,_),comb(_,_))
println( "成功标识; " + value)
}
def seqOp(a:Int, b:Int):Int={
println("SeqOp: " + a + "\t" + b )
val result = a + b
result
}
def comb(a: Int, b:Int):Int ={
println("Comb: " + a + "\t" + b)
val result = a+b
result
}
}
spark的行动算子aggregate函数
最新推荐文章于 2023-09-01 14:57:53 发布