SPARK SQL替换mysql GROUP_CONCAT聚合函数我有一个包含两个字符串类型列(用户名,朋友)的表,对于每个用户名,我想在一行中收集所有朋友,连接为字符串('username1','friends1,friends2,friends3')。我知道MySql通过GROUP_CONCAT做到这一点,有没有办法用SPARK SQL做到这一点?
3 回答
GCT1015
TA贡献1827条经验 获得超4个赞
这是一个可以在PySpark中使用的函数:
import pyspark.sql.functions as Fdef group_concat(col, distinct=False, sep=','): if distinct: collect = F.collect_set(col.cast(StringType())) else: collect = F.collect_list(col.cast(StringType())) return F.concat_ws(sep, collect)table.groupby('username').agg(F.group_concat('friends').alias('friends'))
在SQL中:
select username, concat_ws(',', collect_list(friends)) as friendsfrom tablegroup by username
添加回答
举报
0/150
提交
取消