Spark SQL 实现 group_concat分组拼接列值

spark | 2020-03-06 16:25:47

在mysql中有group_concat,可以分组将各组的某列的值拼接到一个字段中去,而spark sql却没有这样的函数,但也有强大的函数来支持

1.新建测试表


+-------+---+
|   name|age|
+-------+---+
|Michael| 29|
|   Andy| 30|
| Justin| 19|
| Justin| 20|
|      LI| 20|
+-------+---+


2.sql的实现方式

代码:

sqlContext.sql("select concat_ws(',',collect_set(name)) as names from people group by age").show()

返回值

+---------+---+
|   names|age|
+---------+---+
|LI,Justin| 20|
|   Justin| 19|
|  Michael| 29|
|    Andy| 30|


3.编码的实现方式

df.groupBy("age").agg(concat_ws(",",collect_set("name")).as("names"))

返回值

+---------+---+
|   names|age|
+---------+---+
|LI,Justin| 20|
|   Justin| 19|
|  Michael| 29|
|    Andy| 30|


具体函数详解参考spark sql concat_ws() collect_set() collect_list() 字段值拼接

登录后即可回复 登录 | 注册
    
关注编程学问公众号