如何列出RDD中每个键的最大值?

时间:2018-03-29 17:28:05

标签: apache-spark pyspark

我有像这样的RDD

[(101372, ('Drama', 250)),
(10123, ('Western', 250)),
(101372, ('Western', 200)),
(10123, ('Drama', 200)),
]

我希望将其转换为

  [(101372, ('Drama', 250)),
    (10123, ('Western', 250)),]

我需要为每个USERID计算每个x [1] [1]的最大值 到目前为止,我尝试过的这段代码只返回所有键的最大值

userCountGenres.max(lambda x : x[1][1])

我需要什么代码才能获得每个RDD密钥的最大值?

我正在使用jupyter笔记本和pyspark

1 个答案:

答案 0 :(得分:1)

您已经拥有一对RDD,因此使用reduce by key操作完成max计算应该很容易:

userCountGenres.reduceByKey(lambda v1,v2 : v1 if v1[1] > v2[1] else v2)

这基本上执行相同的max计算(因为使用的函数只选择具有最高编号的元组),但这是按键完成的(Spark执行分组)。