Mar*_*oni 4 hadoop scala apache-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
Run Code Online (Sandbox Code Playgroud)
我想按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]) )
Run Code Online (Sandbox Code Playgroud)
我已经使用map来输出带有正确键的键/值对,但是在构建最终键/数组时遇到了麻烦。
有人可以帮忙吗?
这个怎么样:
import org.apache.spark.sql.functions._
df.withColumn("combined",array("key","id","val1","val2","val3")).groupby("id").agg(collect_list($"combined"))
Run Code Online (Sandbox Code Playgroud)
Array函数将列转换为列数组,然后将其转换为带有collect_list的简单groupby
| 归档时间: |
|
| 查看次数: |
2317 次 |
| 最近记录: |