gpt4 book ai didi

scala - 如何分组并连接 Dataframe Spark Scala 中的列表

转载 作者:行者123 更新时间:2023-12-03 16:14:35 25 4
gpt4 key购买 nike

我有一个包含两列数据的数据框,如下所示

+----+-----------------+
|acct| device|
+----+-----------------+
| B| List(3, 4)|
| C| List(3, 5)|
| A| List(2, 6)|
| B|List(3, 11, 4, 9)|
| C| List(5, 6)|
| A|List(2, 10, 7, 6)|
+----+-----------------+

我需要如下结果
+----+-----------------+
|acct| device|
+----+-----------------+
| B|List(3, 4, 11, 9)|
| C| List(3, 5, 6)|
| A|List(2, 6, 7, 10)|
+----+-----------------+

我试过如下,但似乎不起作用
df.groupBy("acct").agg(concat("device")) df.groupBy("acct").agg(collect_set("device"))
请让我知道如何使用 Scala 实现这一目标?

最佳答案

您可以从爆炸 device 开始列并像您一样继续 - 但请注意,它可能不会保留列表的顺序(无论如何在任何组中都不能保证):

val result = df.withColumn("device", explode($"device"))
.groupBy("acct")
.agg(collect_set("device"))

result.show(truncate = false)
// +----+-------------------+
// |acct|collect_set(device)|
// +----+-------------------+
// |B |[9, 3, 4, 11] |
// |C |[5, 6, 3] |
// |A |[2, 6, 10, 7] |
// +----+-------------------+

关于scala - 如何分组并连接 Dataframe Spark Scala 中的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50241178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com