按数据框分组为特定列上的所需格式

时间:2019-03-17 01:48:24

标签: apache-spark

我在Spark中有一个数据框

0, 1, 2

我想按sno分组,当我按序列号分组时,结果数据框应为

+------+----------+
|sno   | ssn     |
+------+----------+
|   123|200000000|         
|   789|200000002|         
|   123|200000000|         
|   123|200000001|         
|   894|200000001|          
+------+----------+

我是火花的新手,我将如何做

当我将表注册为临时表并通过sql组进行操作时,无法以上述格式获取结果时,如何获取结果?

1 个答案:

答案 0 :(得分:2)

按sno分组后,您可以使用collect_set。下面是相同的代码。

//Creating Test Data
val df = Seq((123, 200000000), (789, 200000002), (123, 200000000), (123, 200000001), (894, 200000001))
  .toDF("sno", "ssn")

val df1 = df.groupBy("sno")
    .agg(collect_set("ssn").as("ssn"))

df1.show(false)

+---+----------------------+
|sno|ssn                   |
+---+----------------------+
|123|[200000000, 200000001]|
|789|[200000002]           |
|894|[200000001]           |
+---+----------------------+