SPARK DataFrame:选择每组的前3行

Dhi*_*TdG 2 scala apache-spark apache-spark-sql spark-dataframe

我坚持使用与SPARK DataFrame类似的用例:选择每个组的第一行.唯一的区别是我需要选择每组的前3行.该agg功能允许我在功能的帮助下maxsort最初应用然后使用该first功能选择最高值.

有没有办法agg在做完后使用函数实现它groupby?如果没有,最好的方法是什么?

小智 6

import org.apache.spark.sql.functions.{row_number, max, broadcast}
import org.apache.spark.sql.expressions.Window

df=Dataframe....

val w = Window.partitionBy($"groupColumn").orderBy($"AnyColumn".desc)

val dfTop = df.withColumn("rn", row_number.over(w)).where($"rn" ===> 3).drop("rn") 
dfTop.show
Run Code Online (Sandbox Code Playgroud)