Сохраняет ли Pyspark `array` порядок? - PullRequest
0 голосов
/ 18 февраля 2020

Функция массива pyspark.sql.functions.array(*cols) поддерживает порядок при создании массива из cols?

Например, если мой массив данных равен

+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|   2|   3|
|   2|   4|   6|
|   7|   2|   4|
+----+----+----+

Должен ли я всегда ожидать, что он сохраняет порядок в массиве вывода?

df.withColumn('col4', F.array('col1', 'col2', 'col3')).show()
+----+----+----+---------+
|col1|col2|col3|     col4|
+----+----+----+---------+
|   1|   2|   3|[1, 2, 3]|
|   2|   4|   6|[2, 4, 6]|
|   7|   2|   4|[7, 2, 4]|
+----+----+----+---------+

Или это может изменить порядок вывода cols в выводе?

1 Ответ

1 голос
/ 18 февраля 2020

То, как вы создаете массив, не изменит порядок. Порядок будет одинаковым во всех случаях. Он сохранит тот же порядок, что и col1, col2, col3. Это полностью зависит от порядка, который вы используете при создании массива. Это не изменится, значит, первое значение col4 в вашем фрейме данных будет [1, 2, 3], оно никогда не будет таким, как [1, 3, 2] или [3, 2, 1].

Но если вы беспокоитесь о вертикальном порядке (по строкам) ) тогда это может измениться согласно данным раздела. Это можно сделать с помощью SortBy, ParitionBy для сохранения того же порядка.

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