从数据帧中取出前n个记录,按唯一ID分组

时间:2016-10-20 21:32:36

标签: scala apache-spark machine-learning

我有这样的数据集

enter image description here

如您所见,按照评级和userId排序我需要获得一个新的Dataframe,其中每个组的前2个结果都是唯一的user_id我试过

dataframe.groupBy("user_id").agg(someUdfFuntion)

我尝试使用排名功能,但似乎没有用,我试图过滤数据帧,但没有结果我怎么能完成这个?

1 个答案:

答案 0 :(得分:3)

尝试:

import org.apache.spark.sql.expressions.Window
import org.apache.spark.sql.functions.row_number

val window = Window.partitionBy("userId").orderBy($"rating".desc)

dataframe.withColumn("r", row_number.over(window)).where($"r" <= n)