【发布时间】:2019-12-17 02:06:18
【问题描述】:
这是基于来自以下链接的 Sumit 回答的问题
[Spark SQL: apply aggregate functions to a list of columns
这里是详细信息
val Claim1 = StructType(Seq(StructField("pid", StringType, true),StructField("diag1", StringType,
true),StructField("diag2", StringType, true), StructField("allowed", IntegerType, true),
StructField("allowed1", IntegerType, true)))
val claimsData1 = Seq(("PID1", "diag1", "diag2", 100, 200), ("PID1", "diag2", "diag3", 300, 600),
("PID1", "diag1", "diag5", 340, 680), ("PID2", "diag3", "diag4", 245, 490), ("PID2", "diag2",
"diag1", 124, 248))
val claimRDD1 = sc.parallelize(claimsData1)
val claimRDDRow1 = claimRDD1.map(p => Row(p._1, p._2, p._3, p._4, p._5))
val claimRDD2DF1 = sqlContext.createDataFrame(claimRDDRow1, Claim1)
val exprs = Map("allowed" -> "sum", "allowed1" -> "avg")
claimRDD2DF1.groupBy("pid").agg(exprs) show false
但它没有为命名新列提供别名,我有一个数据框,我需要对一组列执行多个聚合,它可以是多组列的 sum、avg、min、max,所以请让我知道是否有解决上述问题的方法或更好的方法来实现这一点?
提前致谢。
【问题讨论】:
标签: scala apache-spark apache-spark-sql