为了账号安全,请及时绑定邮箱和手机立即绑定

在spark数据框的同一列上进行多个聚合操作

在spark数据框的同一列上进行多个聚合操作

拉丁的传说 2019-10-11 10:29:10
我有三个字符串类型的数组,其中包含以下信息:groupBy数组:包含要对数据进行分组的列的名称。聚合数组:包含要聚合的列的名称。操作数组:包含我要执行的聚合操作我正在尝试使用Spark数据框架来实现这一目标。Spark数据帧提供了agg(),您可以在其中传递Map [String,String](具有列名和相应的聚合操作)作为输入,但是我想对数据的同一列执行不同的聚合操作。关于如何实现这一目标的任何建议?
查看完整描述

3 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

对于那些想知道的人,如何在不使用python进行列表理解的情况下编写@ zero323答案:


from pyspark.sql.functions import min, max, col

# init your spark dataframe


expr = [min(col("valueName")),max(col("valueName"))]

df.groupBy("keyName").agg(*expr)


查看完整回答
反对 回复 2019-10-11
?
慕的地8271018

TA贡献1796条经验 获得超4个赞

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)

//礼貌的Zach ..


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 695 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信