Как преобразовать значения столбцов в один массив в Scala? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь преобразовать все столбцы моего информационного кадра в отдельные массивы. Поддерживается ли операция в структурированном потоке, с помощью которой мы можем выполнить нечто противоположное «разнесению»? Любое предложение очень ценится !!!

Пробовал метод collect () и collectAsList (). Но это не поддерживается в потоке

+---+---------------+----------------+--------+
|row|ADDRESS_TYPE_CD|DISCONTINUE_DATE|param_cd|
+---+---------------+----------------+--------+
|0  |1              |null            |7       |
|2  |6              |null            |1       |
+---+---------------+----------------+--------+

Мой результат должен выглядеть так:

+---+---------------+----------------+--------+
|row|ADDRESS_TYPE_CD|DISCONTINUE_DATE|param_cd|
+---+---------------+----------------+--------+
[0,2]  [1,6]          [null,null]     [7,2]
+---+---------------+----------------+--------+

1 Ответ

0 голосов
/ 19 июня 2019

Например, вы можете использовать collect_list для всех ваших столбцов.Это будет выглядеть следующим образом:

val aggs = df.columns.map(c => collect_list(col(c)) as c)
df.select(aggs :_*).show()
+------+---------------+----------------+--------+
|   row|ADDRESS_TYPE_CD|DISCONTINUE_DATE|param_cd|
+------+---------------+----------------+--------+
|[0, 2]|         [1, 6]|    [null, null]|  [7, 1]|
+------+---------------+----------------+--------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...