Apache Spark Dataframe Groupby agg()用于多列

时间:2017-03-17 06:21:52

标签: scala apache-spark spark-dataframe

我有一个DataFrame有3列,即Id, First Name, Last Name

我想在GroupBy的基础上应用Id,并希望收集First Name, Last Name列作为列表。

示例: - 我有这样的DF

+---+-------+--------+
|id |fName  |lName   |
+---+-------+--------+
|1  |Akash  |Sethi   |
|2  |Kunal  |Kapoor  |
|3  |Rishabh|Verma   |
|2  |Sonu   |Mehrotra|
+---+-------+--------+

我希望我的输出像这样

+---+-------+--------+--------------------+
|id |fname           |lName               |
+---+-------+--------+--------------------+
|1  |[Akash]         |[Sethi]             |
|2  |[Kunal, Sonu]   |[Kapoor, Mehrotra]  |
|3  |[Rishabh]       |[Verma]             |
+---+-------+--------+--------------------+

先谢谢

1 个答案:

答案 0 :(得分:8)

您可以聚合多个列,如下所示:

df.groupBy("id").agg(collect_list("fName"), collect_list("lName"))

它会给你预期的结果。