искра: группировка по неизменной последовательности - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть набор данных, который выглядит примерно так:

|---------------------|
|      Status         |
|---------------------|
|          1         |
|---------------------|
|          1         |
|---------------------|
|          2         |
|---------------------|
|          3         |
|---------------------|
|          3         |
|---------------------|
|          2         |
|---------------------|
|          2         |
|---------------------|
|          2         |
|---------------------|
|          1         |
|---------------------|
|          1         |
|---------------------|

Мне нужно сгруппировать каждый набор статусов, содержащих одно и то же значение, в один ряд, что является лучшим способом сделать это в spark (версия 2.2.4)

1 Ответ

0 голосов
/ 22 апреля 2020

Вы можете groupBy в статусе, затем использовать collect_list


Example:

//sampledata

df.show()
//+------+
//|status|
//+------+
//|     1|
//|     1|
//|     2|
//|     3|
//|     3|
//|     2|
//|     1|
//+------+

df.groupBy("status").
agg(concat_ws(",",collect_list("status")).alias("group")).
show()   
//+------+-----+
//|status|group|
//+------+-----+
//|     3|  3,3|
//|     1|1,1,1|
//|     2|  2,2|
//+------+-----+

//collect as array

df.groupBy("status").
agg(collect_list("status").alias("group")).
show()  
//+------+---------+
//|status|    group|
//+------+---------+
//|     3|   [3, 3]|
//|     1|[1, 1, 1]|
//|     2|   [2, 2]|
//+------+---------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...