运维开发网

scala – Spark:按键对数组中的行进行分组

运维开发网 https://www.qedev.com 2020-07-13 14:31 出处:网络 作者:运维开发网整理
我有一个像这样的火花数据集: key id val1 val2 val3 1 a a1 a2 a3 2 a a4 a5 a6 3 b b1 b2 b3 4 b b4 b5 b6 5 b b7 b8 b9 6 c c1 c2 c3 我想在列表或数组中按id分组所有行,如下所示: (a, ([1 a a1 a
我有一个像这样的火花数据集:

key id val1 val2 val3
1   a  a1   a2   a3
2   a  a4   a5   a6
3   b  b1   b2   b3
4   b  b4   b5   b6
5   b  b7   b8   b9
6   c  c1   c2   c3

我想在列表或数组中按id分组所有行,如下所示:

(a, ([1   a  a1   a2   a3], [2   a  a4   a5   a6]) ),
(b, ([3   b  b1   b2   b3], [4   b  b4   b5   b6], [5   b  b7   b8   b9]) ),
(c, ([6   c  c1   c2   c3]) )

我使用map用右键输出键/值对但我在构建最终键/数组时遇到了麻烦.

任何人都可以帮忙吗?

这个怎么样:

import org.apache.spark.sql.functions._
df.withColumn("combined",array("key","id","val1","val2","val3")).groupby("id").agg(collect_list($"combined"))

Array函数将列转换为列数组,然后将其转换为带collect_list的简单groupby

0

精彩评论

暂无评论...
验证码 换一张
取 消