猿问

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

我有三个字符串类型的数组,其中包含以下信息:

  • groupBy数组:包含要对数据进行分组的列的名称。

  • 聚合数组:包含要聚合的列的名称。

  • 操作数组:包含我要执行的聚合操作

我正在尝试使用Spark数据框架来实现这一目标。Spark数据帧提供了agg(),您可以在其中传递Map [String,String](具有列名和相应的聚合操作)作为输入,但是我想对数据的同一列执行不同的聚合操作。关于如何实现这一目标的任何建议?


拉丁的传说
浏览 696回答 3
3回答

富国沪深

对于那些想知道的人,如何在不使用python进行列表理解的情况下编写@ zero323答案:from pyspark.sql.functions import min, max, col# init your spark dataframeexpr = [min(col("valueName")),max(col("valueName"))]df.groupBy("keyName").agg(*expr)

慕的地8271018

case class soExample(firstName: String, lastName: String, Amount: Int)val df =  Seq(soExample("me", "zack", 100)).toDFimport 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 ..
随时随地看视频慕课网APP
我要回答