我有一个像这样的火花数据集:
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] 删除。
我来说两句