加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 在groupby之后将Spark DataFrame的行聚合到String

发布时间:2020-12-16 09:57:06 所属栏目:安全 来源:网络整理
导读:我是Spark和Scale的新手,可能真的需要一个提示来解决我的问题.所以我有两个DataFrames A(列id和名称)和B(列id和文本)想要加入它们,按ID分组并将所有文本行组合成一个字符串: 一个 +--------+--------+| id| name|+--------+--------+| 0| A|| 1| B|+-------
我是Spark和Scale的新手,可能真的需要一个提示来解决我的问题.所以我有两个DataFrames A(列id和名称)和B(列id和文本)想要加入它们,按ID分组并将所有文本行组合成一个字符串:

一个

+--------+--------+
|      id|    name|
+--------+--------+
|       0|       A|
|       1|       B|
+--------+--------+

+--------+ -------+
|      id|    text|
+--------+--------+
|       0|     one|
|       0|     two|
|       1|   three|
|       1|    four|
+--------+--------+

期望的结果:

+--------+--------+----------+
|      id|    name|     texts|
+--------+--------+----------+
|       0|       A|   one two|
|       1|       B|three four|
+--------+--------+----------+

到目前为止,我正在尝试以下方法:

var C = A.join(B,"id")
var D = C.groupBy("id","name").agg(collect_list("text") as "texts")

除了我的文本列是一个字符串数组而不是一个字符串之外,这个效果很好.我非常感谢一些帮助.

解决方法

我只是添加一些小功能,以提供正确的解决方案,即

A.join(B,Seq("id"),"left").orderBy("id").groupBy("id","name").agg(concat_ws(" ",collect_list("text")) as "texts")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读