Блоки данных: группа данных объединяется, набор сборщиков включает повторяющиеся значения - PullRequest
0 голосов
/ 06 июня 2019

Предположим, у меня есть набор данных df, как в следующем

col1   col2 
1      A
1      B
1      C
2      B
2      B
2      C

Я хочу получить набор данных с col1 и сделать col2 массивом, используя следующий код

var df2=df.groupBy("col1").agg(collect_set("col2").alias("col2"))

тогда df2 будет

COl1    Col2
1       A,B,C
2       B,C

Как изменить код, чтобы я мог иметь

COl1    Col2
1       A,B,C
2       B,B,C

1 Ответ

2 голосов
/ 06 июня 2019

Вы можете сделать collect_list вместо collect_set, потому что collect_set возвращает a set of objects with duplicate elements eliminate:

scala> var df2=df.groupBy("col1").agg(collect_list("col2").alias("col2"))
df2: org.apache.spark.sql.DataFrame = [col1: int, col2: array<string>]
scala> df2.show
+----+---------+
|col1|     col2|
+----+---------+
|   1|[a, b, c]|
|   2|[b, b, c]|
+----+---------+

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...