我正在寻找Spark Dataframe中的minBy
聚合的等效函数,或者可能需要手动聚合。有什么想法吗?谢谢。
https://prestodb.io/docs/current/functions/aggregate.html#min_by
答案 0 :(得分:4)
没有这样的直接函数可以从数据框中获取“ min_by”值。
这是Spark中的两阶段操作。首先 groupby 列,然后应用 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|
+---+----------+