首页 > 解决方案 > Spark Dataframe 中的 minBy 等效项

问题描述

我正在寻找minBySpark Dataframe 中聚合的等效功能,或者可能需要手动聚合。有什么想法吗?谢谢。

https://prestodb.io/docs/current/functions/aggregate.html#min_by

标签: scalaapache-sparkapache-spark-sql

解决方案


没有这样的直接函数可以从 Dataframe 中获取“min_by”值。

这是 Spark 中的两阶段操作。首先列分组,然后应用min函数来获取每个组的每个数字列的最小值。

scala> val inputDF = Seq(("a", 1),("b", 2), ("b", 3), ("a", 4), ("a", 5)).toDF("id", "count")
inputDF: org.apache.spark.sql.DataFrame = [id: string, count: int]

scala> inputDF.show()
+---+-----+
| id|count|
+---+-----+
|  a|    1|
|  b|    2|
|  b|    3|
|  a|    4|
|  a|    5|
+---+-----+

scala> inputDF.groupBy($"id").min("count").show()
+---+----------+
| id|min(count)|
+---+----------+
|  b|         2|
|  a|         1|
+---+----------+

推荐阅读