python spark聚合函数

时间:2016-12-25 00:36:12

标签: apache-spark pyspark

我正在尝试聚合功能

num = sc.parallelize([1,2,3,4,5])
seq = (lambda x,y:(x[0]+y,x[1]+1))
comb = (lambda x,y:(x[0]+y[0],x[1]+y[1]))
res = num.aggregate((0,0),seqOp=seq,combOp=comb)
print("res is ",res)

,结果是

res is  (15, 5)

但如果我将之前代码的第三行更改为:

comb = (lambda x,y:(y[0],y[1]))

结果仍然相同

res is  (15, 5)

不应该这样,因为我没有合并两个产生的元组。

如果我再次改为

comb = (lambda x,y:(x[0],x[1]))

结果是:

res is  (0, 0)

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

请确保您正在使用哪种模式,尤其是在使用独立模式时应该发生这种情况。

答案 1 :(得分:0)

我自己得到了答案。 这是在独立模式下发生的,其中x是(0,0),y是(15,5)。