2017-12-21 20 views
0

결과 :스파크 : DataFrame GROUPBY에 합계를 사용하는 방법은 다음과 dataframe을 바탕으로

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

내가 열 Amnt의 GROUPBY ID와 Categ의 합을 취득하고 싶습니다. SQL에서

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

내가 어떻게 스칼라에서이 작업을 수행하는

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

그러나 같은 일을 할 것인가? 나는

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

을 시도하지만 이것은 단지 대신 실제로 나에게 카운트의 합을주는 sum(count)로 카운트 열 이름을 변경했습니다.

감사

+0

, "Categ"). agg (sum ("Amnt"). as ("Count"))'물론 org.apache.spark.sql.functions.sum'을 가져와야합니다. –

답변

3

어쩌면 잘못된 열을 합산했다,하지만 grougBy/sum 문은 나에게 올바른 구문 같습니다

당신이 집계 사용 별명`df.groupBy ("ID"를 사용할 필요가
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| 
// +---+-----+---------+