Сортировать или заказать в pyspark, показывая странный вывод - PullRequest
0 голосов
/ 23 марта 2019

Я пытаюсь отсортировать значение в моем фрейме данных pyspark, но он показывает странный вывод.Вместо сортировки по целому числу это сортировка по первой цифре целого числа

Я пробовал метод sort и orderBy, оба дают одинаковый результат

sdf=spark.read.csv("dummy.txt", header=True)
sdf.sort('1',ascending=False).show()

Я получаю следующий вывод

+---+
| 98|
|  9|
|  8|
| 76|
|  7|
| 68|
|  6|
| 54|
|  5|
| 43|
|  4|
| 35|
| 34|
| 34|
|  3|
|  2|
|  2|
|  2|
| 10|
+---+

Может ли кто-нибудь объяснить мне эту вещь

1 Ответ

0 голосов
/ 23 марта 2019

Поскольку ваш столбец содержит данные типа String, String преобразуется в последовательность символов, и эти символы сортируются. Это работает как функция карты.

Таким образом, вы можете выполнить приведение типа, а затем применить функцию orderBy для достижения требуемого результата.

>>> df
DataFrame[Numb: string]
>>> df.show()
+----+
|Numb|
+----+
|  20|
|  19|
|   1|
| 200|
|  60|
+----+

>>> df.orderBy(df.Numb.cast('int'),ascending=False).show()
+----+
|Numb|
+----+
| 200|
|  60|
|  20|
|  19|
|   1|
+----+ 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...