Scala Spark使用Window函数查找最大值

布莱斯

我有一个数据集,看起来像这样:

+------------------------|-----+
|               timestamp| zone|
+------------------------+-----+
|    2019-01-01 00:05:00 |    A|
|    2019-01-01 00:05:00 |    A|
|    2019-01-01 00:05:00 |    B|
|    2019-01-01 01:05:00 |    C|
|    2019-01-01 02:05:00 |    B|
|    2019-01-01 02:05:00 |    B|
+------------------------+-----+

对于每小时,我需要计算哪个区域的行数最多,最后得到一个看起来像这样的表:

+-----|-----+-----+
| hour| zone| max |
+-----+-----+-----+
|    0|    A|    2|
|    1|    C|    1|
|    2|    B|    2|
+-----+-----+-----+

我的指令说,我需要使用Window函数以及“ group by”来找到我的最大数量。

我已经尝试了一些方法,但是不确定是否要关闭。任何帮助,将不胜感激。

呼叫

您可以将Windowing functionsgroup by与数据框一起使用

您可以使用rank() over(partition by)窗口功能。

import org.apache.spark.sql.function._

// first group by hour and zone
    val df_group = data_tms.
      select(hour(col("timestamp")).as("hour"), col("zone"))
      .groupBy(col("hour"), col("zone"))
      .agg(count("zone").as("max"))
// second rank by hour order by max in descending order
    val df_rank = df_group.
      select(col("hour"),
        col("zone"),
        col("max"),
        rank().over(Window.partitionBy(col("hour")).orderBy(col("max").desc)).as("rank"))
// filter by col rank = 1
    df_rank
      .select(col("hour"), 
        col("zone"), 
        col("max"))
      .where(col("rank") === 1)
      .orderBy(col("hour"))
     .show()

/*
+----+----+---+
|hour|zone|max|
+----+----+---+
|   0|   A|  2|
|   1|   C|  1|
|   2|   B|  2|
+----+----+---+
*/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala Spark使用Window函数查找最大值

来自分类Dev

Spark Scala DataFrame查找最大值

来自分类Dev

在Scala中的Spark数据帧的每一行中查找最大值

来自分类Dev

在Scala中递归查找列表中的最大值

来自分类Dev

在Scala中递归查找列表中的最大值

来自分类Dev

Scala中列表的局部最大值

来自分类Dev

Scala根据最大值过滤列表

来自分类Dev

在 Scala 中查找给定数组的最小值和最大值

来自分类Dev

Scala 新手,比reduceLeft 更好/惯用的方式在集合中查找最大值(key,val)?

来自分类Dev

Spark Scala数据框中的某些特定列的最大值

来自分类Dev

从 Scala/spark 中时间戳的数据帧列中获取最大值

来自分类Dev

Scala-如何获取Json字段的最大值?

来自分类Dev

scala:如何获取数据框中列的最大值

来自分类Dev

使用JavaScript函数在数组中查找最大值

来自分类Dev

使用函数从文件中查找最大值

来自分类常见问题

在给定范围内查找最大序列-Spark / Scala

来自分类Dev

使用 Scala/Spark 复制列中的值

来自分类Dev

spark Scala 中的分区函数

来自分类Dev

RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

来自分类Dev

RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

来自分类Dev

Scala:根据条件计算最小值、最大值、平均值

来自分类Dev

Scala DataFrame-如何仅打印具有最大值的行

来自分类Dev

从案例类节点列表中获取最大值,返回 Scala Option[List]

来自分类Dev

从 Scala 映射中获取所有具有最大值的键值对

来自分类Dev

使用C中的函数查找数组中的最大值和最小值

来自分类Dev

查找函数的最小值和最大值

来自分类Dev

scala按id最大日期查找组

来自分类Dev

使用SBT运行Scala Spark

来自分类Dev

Spark:在Scala中使用mapPartition

Related 相关文章

  1. 1

    Scala Spark使用Window函数查找最大值

  2. 2

    Spark Scala DataFrame查找最大值

  3. 3

    在Scala中的Spark数据帧的每一行中查找最大值

  4. 4

    在Scala中递归查找列表中的最大值

  5. 5

    在Scala中递归查找列表中的最大值

  6. 6

    Scala中列表的局部最大值

  7. 7

    Scala根据最大值过滤列表

  8. 8

    在 Scala 中查找给定数组的最小值和最大值

  9. 9

    Scala 新手,比reduceLeft 更好/惯用的方式在集合中查找最大值(key,val)?

  10. 10

    Spark Scala数据框中的某些特定列的最大值

  11. 11

    从 Scala/spark 中时间戳的数据帧列中获取最大值

  12. 12

    Scala-如何获取Json字段的最大值?

  13. 13

    scala:如何获取数据框中列的最大值

  14. 14

    使用JavaScript函数在数组中查找最大值

  15. 15

    使用函数从文件中查找最大值

  16. 16

    在给定范围内查找最大序列-Spark / Scala

  17. 17

    使用 Scala/Spark 复制列中的值

  18. 18

    spark Scala 中的分区函数

  19. 19

    RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

  20. 20

    RDD [scala.collection.immutable.Map [String,Any]的最大值和最小值

  21. 21

    Scala:根据条件计算最小值、最大值、平均值

  22. 22

    Scala DataFrame-如何仅打印具有最大值的行

  23. 23

    从案例类节点列表中获取最大值,返回 Scala Option[List]

  24. 24

    从 Scala 映射中获取所有具有最大值的键值对

  25. 25

    使用C中的函数查找数组中的最大值和最小值

  26. 26

    查找函数的最小值和最大值

  27. 27

    scala按id最大日期查找组

  28. 28

    使用SBT运行Scala Spark

  29. 29

    Spark:在Scala中使用mapPartition

热门标签

归档