📜  如何在 PySpark 中按值排序?(1)

📅  最后修改于: 2023-12-03 15:08:45.039000             🧑  作者: Mango

如何在 PySpark 中按值排序?

在 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() 方法允许我们按值对数据集进行排序。我们可以按单个或多个列名排序,并指定升序或降序排序方式。