3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
你需要的一切都if else在reduceByKey功能
rdd3 = rdd2.reduceByKey(lambda x, y: x if(x[1] < y[1]) else y)
這應(yīng)該給你你想要的輸出為
#(1, ('c', 2))
#(2, ('d', 1))
我希望答案是有幫助的

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
在這里,我將通過使用scala獲得所需的結(jié)果,因?yàn)槲椰F(xiàn)在已經(jīng)學(xué)到了更多scala,所以我現(xiàn)在可以回答我自己的問題,如下所示:
val list = List((1,('a',4)),(2,('b',3)),(1,('c',2)),(2,('d',1)))
val rdd = sc.parallelize(list)
rdd.reduceByKey((rec1,rec2) => if(rec1._2 > rec2._2) rec2 else rec1).foreach(println)
輸出:
(2,(d,1))
(1,(c,2))
我在這里提到了此代碼,因?yàn)槠渌丝梢詤⒖疾l(fā)現(xiàn)它很有用。謝謝...

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
min與key參數(shù)一起使用:
from functools import partial
from operator import itemgetter
rdd.reduceByKey(partial(min, key=itemgetter(1)))
添加回答
舉報(bào)