我有一个如下的RDD
dataSource = sc.parallelize( [("user1", (3, "blue")), ("user1", (4, "black")), ("user2", (5, "white"), ("user2", (3, "black")), ("user2", (6, "red")), ("user1", (1, "red"))] )
我想使用 reduceByKey
为每个用户找到前2种颜色,因此输出将是RDD,如:
sc.parallelize([("user1", ["black", "blue"]), ("user2", ["red", "white"])])
所以我需要通过键减少然后对每个键的值进行排序,即(数字,颜色)数字并返回前n个颜色 .
我不想使用 groupBy
. 如果除了 groupBy
之外还有比 reduceByKey
更好的东西,那就太棒了:)
1 回答
例如,您可以使用heap queue . 所需进口:
助手功能:
数据:
解:
结果: