python - Spark 选择 RDD 中的最高值

标签 python apache-spark rdd

原始数据集为:

# (numbersofrating,title,avg_rating)
newRDD =[(3,'monster',4),(4,'minions 3D',5),....] 

我想在newRDD中选择top 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)....] 

最佳答案

您可以将 toptakeOrderedkey 参数一起使用:

newRDD.top(2, key=lambda x: x[2])

newRDD.takeOrdered(2, key=lambda x: -x[2])

请注意,top 以降序获取元素,而 takeOrdered 以升序获取元素,因此 key 函数在这两种情况下是不同的。

关于python - Spark 选择 RDD 中的最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31882221/

相关文章:

python - 尝试获取公会角色时出现 Discord API 401 未经授权错误

python - 如何将增量添加到 python datetime.time?

hadoop - 如何为大数据集群分配物理资源?

apache-spark - 在 SPARK 中,为什么 Narrow Dependency 严格不需要 schuffle over the network?

python - 在 Django 1.8 中覆盖现有的模板标记方法

python - 参数列表的长度 (3) 和 CL 生成的参数数量 (9) 不一致

apache-spark - Spark UDF 对数组进行操作

submit - spark提交在类路径中添加多个jar

scala - 如何通过键或过滤器()使用 Spark 交点()和两个RDD?

apache-spark - 在 pyspark 中合并两个 RDD