Spark Scala数据框具有单个Group By的多个聚合[重复]

Posted

技术标签:

【中文标题】Spark Scala数据框具有单个Group By的多个聚合[重复]【英文标题】:Spark Scala Data Frame to have multiple aggregation of single Group By [duplicate] 【发布时间】:2019-06-17 17:34:10 【问题描述】:

Spark Scala 数据框具有单个分组的多个聚合。 例如

val groupped = df.groupBy("firstName", "lastName").sum("Amount").toDF()

但是如果我需要 Count、Sum、Max 等呢

/* Below Does Not Work  , but this is what the intention is  
val groupped = df.groupBy("firstName", "lastName").sum("Amount").count().toDF()
*/

输出 groupped.show()

--------------------------------------------------
| firstName | lastName| Amount|count | Max | Min  |
--------------------------------------------------

【问题讨论】:

// 计算最大年龄和平均工资,按部门和性别分组。 ds.groupBy($"department", $"gender").agg(Map( "salary" -> "avg", "age" -> "max" )) 请参阅文档中的 groupyBy 示例spark.apache.org/docs/2.3.0/api/scala/…跨度> @user10958683 True.. 它是重复的,但 Zaks 的答案更具可读性 【参考方案1】:
case class soExample(firstName: String, lastName: String, Amount: Int)
val df =  Seq(soExample("me", "zack", 100)).toDF

import org.apache.spark.sql.functions._

val groupped = df.groupBy("firstName", "lastName").agg(
     sum("Amount"),
     mean("Amount"), 
     stddev("Amount"),
     count(lit(1)).alias("numOfRecords")
   ).toDF()

display(groupped)

【讨论】:

以上是关于Spark Scala数据框具有单个Group By的多个聚合[重复]的主要内容,如果未能解决你的问题,请参考以下文章

spark Group By数据框列没有聚合[重复]

在 Spark-Scala 中将单个字符串列拆分为多列

如何在 Spark/Scala 中查找具有许多空值的列

我有一个表格将表格作为数据框所需的答案在 spark scala 中

使用具有相同名称的嵌套子属性展平 Spark JSON 数据框

如何在 Scala/Spark 的数据框中扩展数组 [重复]