1、>>>
seqOp
=
(
lambda
x, y: (x[
0
]
+
y, x[
1
]
+
1
))
2、>>>
combOp
=
(
lambda
x, y: (x[
0
]
+
y[
0
], x[
1
]
+
y[
1
]))
3、>>>
sc
.
parallelize([
1
,
2
,
3
,
4
],4)
.
aggregate((
0
,
0
), seqOp, combOp)
(10, 4)
4、>>>
sc
.
parallelize([
1,
2,
3,
4,5
],3)
.
aggregate((1,1
), seqOp, combOp)
(19,9)
依次解释上述函数
1、建立各分区内的聚集函数,又初始值依次与分区内的函数做操作
2、建立各分区间的组合函数,
3、使用aggregate 样例1
4、使用aggregate 样例2
样例1 解释:
分区数 : 4
0 : 1
1 : 2
2 : 3
3 : 4
利用zerovalue (0,0) 和 seqOp 对各分区进行聚集 :
0 : (1,1)
1 : (2 , 1)
2 : (3,1)
3: (4 , 1)
利用 zerovalue和combOp 进行各分区间的聚合 :
(0,0) + (1,1)+ (2,1)+ (3,1)+ (4,1) = (10,4)
样例2 解释:
分区数 : 3
0 : 1,2
1 : 3,4
2 : 5
利用zerovalue (0,0) 和 seqOp 对各分区进行聚集 :
0 : (1,1)+(1,1)+(2,1) = (4,3)
1 : (1,1)+(3,1)+(4,1) = (8,3)
2 : (1,1) + (5,1) = (6,2)
利用 zerovalue和combOp 进行各分区间的聚合 :
(1,1) + (4,3) + (8,3) + (6,2) = (19,9)