我有三个字符串类型的数组,其中包含以下信息: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)
慕的地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 ..
- 3 回答
- 0 关注
- 695 浏览
添加回答
举报
0/150
提交
取消