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

hug*_*ggs 2 scala apache-spark spark-dataframe

基于以下数据帧:

+---+-----+----+
| ID|Categ|Amnt|
+---+-----+----+
|  1|    A|  10|
|  1|    A|   5|
|  2|    A|  56|
|  2|    B|  13|
+---+-----+----+
Run Code Online (Sandbox Code Playgroud)

我想获得ID和分类列Amnt group的总和.

+---+-----+-----+
| ID|Categ|Count|
+---+-----+-----+
|  1|    A|  15 |
|  2|    A|  56 |
|  2|    B|  13 |
+---+-----+-----+
Run Code Online (Sandbox Code Playgroud)

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

SELECT ID,
       Categ, 
       SUM (Count) 
FROM Table 
GROUP BY ID,
         Categ;
Run Code Online (Sandbox Code Playgroud)

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

DF.groupBy($"ID", $"Categ").sum("Count")
Run Code Online (Sandbox Code Playgroud)

但这只是改变了Count列名,sum(count)而不是实际给出了计数的总和.

谢谢

Leo*_*o C 8

也许你在总结错误的列,但你的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|
// +---+-----+---------+
Run Code Online (Sandbox Code Playgroud)