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

马可·蒂佐尼

我有一个像这样的火花数据集:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章