scala – 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

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...