我有像这样的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
答案 0 :(得分:1)
您已经拥有一对RDD,因此使用reduce by key操作完成max
计算应该很容易:
userCountGenres.reduceByKey(lambda v1,v2 : v1 if v1[1] > v2[1] else v2)
这基本上执行相同的max
计算(因为使用的函数只选择具有最高编号的元组),但这是按键完成的(Spark执行分组)。