📅  最后修改于: 2023-12-03 15:08:45.039000             🧑  作者: Mango
在 PySpark 中,我们可以使用 orderBy()
方法来按值对数据集进行排序。该方法接受一个或多个列名,并指定升序或降序排序方式。
下面是一个简单的示例,如何在 PySpark 中按值对数据集进行排序:
# 导入 PySpark 模块
from pyspark.sql.functions import desc
# 创建数据集
data = [
(1, "John", 25),
(2, "Mary", 30),
(3, "Bob", 20),
(4, "Alice", 35),
]
# 将数据集转换为 DataFrame
df = spark.createDataFrame(data, ["id", "name", "age"])
# 按年龄降序排序并显示结果
df.orderBy(desc("age")).show()
输出结果如下:
+---+-----+---+
| id| name|age|
+---+-----+---+
| 4|Alice| 35|
| 2| Mary| 30|
| 1| John| 25|
| 3| Bob| 20|
+---+-----+---+
在上面的示例中,我们首先将数据集转换为 DataFrame,并使用 orderBy()
方法按年龄降序排序。desc()
方法指定了排序方式为降序。最后,我们调用 show()
方法显示排序后的结果。
除了单个列名外,我们还可以按多个列名排序。下面是一个示例,如何按名称升序和年龄降序对数据集进行排序:
# 按名称升序和年龄降序排序并显示结果
df.orderBy("name", desc("age")).show()
输出结果如下:
+---+-----+---+
| id| name|age|
+---+-----+---+
| 4|Alice| 35|
| 3| Bob| 20|
| 1| John| 25|
| 2| Mary| 30|
+---+-----+---+
在上面的示例中,我们使用 orderBy()
方法按名称升序排列,但对于相同名称的记录,我们使用 desc()
方法按年龄降序排列。
总之,PySpark 中的 orderBy()
方法允许我们按值对数据集进行排序。我们可以按单个或多个列名排序,并指定升序或降序排序方式。