0
我想聚合函数蟒蛇火花聚合函数
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)
五月有人解释一下吗?
没有。我没有改变(0,0)。我改变了combOp功能。 – Jingwei
你能告诉我你正在使用哪个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上测试了这个。 –