首页 > 解决方案 > PySpark - 如何按 ResultIterable 中的值排序?

问题描述

我正在构建一个 RDD:

kk = preRatings.filter(lambda a:a.rating>0).map(lambda b:(b.user,(b.product,b.rating)))

如何按评分值(desc)排序并使用格式(用户,(产品,评分)获得前 10 个结果?

顺便说一句,我指的是这个 scala 代码,不知道作者在里面试图做什么case

preRatings 
 .filter(_.rating > 0) 
 .map(rating => (rating.user,(rating.product, rating.rating))) 
 .groupByKey() 
 .map{ case (uid,recs) => 
          UserRecs(uid,recs.toList.sortWith(_._2 >_._2)
          .take(10)
          .map(x => Recommendation(x._1,x._2))) 
 }.toDF()

具体来说,这一行:

recs.toList.sortWith(_._2 >_._2)

与相同的_2进行比较意味着什么?

标签: apache-sparkpyspark

解决方案


推荐阅读