我有这样的数据集
如您所见,按照评级和userId排序我需要获得一个新的Dataframe,其中每个组的前2个结果都是唯一的user_id我试过
dataframe.groupBy("user_id").agg(someUdfFuntion)
我尝试使用排名功能,但似乎没有用,我试图过滤数据帧,但没有结果我怎么能完成这个?
答案 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)