SPARK SQL替换mysql GROUP_CONCAT聚合函数

SPARK SQL替换mysql GROUP_CONCAT聚合函数

我有一个包含两个字符串类型列(用户名,朋友)的表,对于每个用户名,我想在一行中收集所有朋友,连接为字符串('username1','friends1,friends2,friends3')。我知道MySql通过GROUP_CONCAT做到这一点,有没有办法用SPARK SQL做到这一点?



慕标琳琳
浏览 2656回答 3
3回答

GCT1015

这是一个可以在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
打开App,查看更多内容
随时随地看视频慕课网APP