Apache spark python spark聚合函数

Apache spark python spark聚合函数,apache-spark,pyspark,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:

我在尝试聚合函数

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)

有人能解释一下吗?

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

完全不是。我没有更改(0,0)。我更改了combOp函数。你能告诉我你正在使用哪个版本的Spark吗?我刚刚在Spark 2.1上试过这个,对于
comb=(lambda x,y:(x[0]+y[0],x[1]+y[1])
结果是
(15,5)
,而对于
comb=(lambda x,y:(y[0],y[1])
结果是
(5,1)
。顺便说一句,我也在Spark 1.6.3上测试过这个。你可以试试我正在使用的Spark-2.0.2-bin-hadoop2.7。