Spark:DataFrame如何在groupBy结果上使用Sum

问题描述 投票:1回答:1

基于以下数据帧:

+---+-----+----+
| ID|Categ|Amnt|
+---+-----+----+
|  1|    A|  10|
|  1|    A|   5|
|  2|    A|  56|
|  2|    B|  13|
+---+-----+----+

我想通过ID和Categ获得列Amount组的总和。

+---+-----+-----+
| ID|Categ|Count|
+---+-----+-----+
|  1|    A|  15 |
|  2|    A|  56 |
|  2|    B|  13 |
+---+-----+-----+

在SQL中,我会做类似的事情

SELECT ID,
       Categ, 
       SUM (Count) 
FROM Table 
GROUP BY ID,
         Categ;

但是如何在Scala中执行此操作?我试过了

DF.groupBy($"ID", $"Categ").sum("Count")

但这只是将Count列名改为sum(count)而不是实际给我计数的总和。

谢谢

scala apache-spark spark-dataframe
1个回答
7
投票

也许你在总结错误的列,但是你的grougBy/sum语句对我来说在语法上是正确的:

val df = Seq(
  (1, "A", 10),
  (1, "A", 5),
  (2, "A", 56),
  (2, "B", 13)
).toDF("ID", "Categ", "Amnt")

df.groupBy("ID", "Categ").sum("Amnt").show
// +---+-----+---------+                                                           
// | ID|Categ|sum(Amnt)|
// +---+-----+---------+
// |  1|    A|       15|
// |  2|    A|       56|
// |  2|    B|       13|
// +---+-----+---------+
© www.soinside.com 2019 - 2024. All rights reserved.