在pyspark中排序或排序,显示奇怪的输出

时间:2019-03-23 06:16:53

标签: python pyspark

我正在尝试对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 :(得分:0)

由于您的列包含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|
+----+