原始数据集为:
# (numbersofrating,title,avg_rating)
newRDD =[(3,'monster',4),(4,'minions 3D',5),....]
我想在newRDD中选择前N个avg_ratings。我使用以下代码,它有一个错误。
selectnewRDD = (newRDD.map(x, key =lambda x: x[2]).sortBy(......))
TypeError: map() takes no keyword arguments
预期数据应为:
# (numbersofrating,title,avg_rating)
selectnewRDD =[(4,'minions 3D',5),(3,'monster',4)....]
最佳答案
您可以将top
或takeOrdered
与key
参数一起使用:
newRDD.top(2, key=lambda x: x[2])
或者
newRDD.takeOrdered(2, key=lambda x: -x[2])
请注意,
top
接受元素的降序,而takeOrdered
接受升序,因此两种情况下key
函数均不同。