【问题标题】:Spark, Scala - How to get Top 3 value from each group of two column in dataframe [duplicate]Spark,Scala - 如何从数据框中的每组两列中获取前 3 个值 [重复]
【发布时间】:2018-02-06 12:16:33
【问题描述】:

我有一个包含这些值的 DataFrame:

Dept_id  |  name  | salary
 1           A       10
 2           B       100
 1           D       100
 2           C       105
 1           N       103
 2           F       102
 1           K       90
 2           E       110

我想要这种形式的结果:

Dept_id  |  name  | salary
 1           N       103
 1           D       100
 1           K       90
 2           E       110
 2           C       105 
 2           F       102

提前致谢:)。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    解决方案类似于 pyspark 中的Retrieve top n in each group of a DataFrame in pyspark

    如果你在scala中做同样的事情,那么它应该如下

    df.withColumn("rank", rank().over(Window.partitionBy("Dept_id").orderBy($"salary".desc)))
        .filter($"rank" <= 3)
        .drop("rank")
    

    希望回答对你有帮助

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 2021-11-06
      • 2021-12-20
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 2021-09-02
      • 1970-01-01
      相关资源
      最近更新 更多