为了账号安全,请及时绑定邮箱和手机立即绑定

SPARK SQL替换mysql GROUP_CONCAT聚合函数

SPARK SQL替换mysql GROUP_CONCAT聚合函数

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


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 2648 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信