Python 如何在pyspark代码中对表字段进行排序

Python 如何在pyspark代码中对表字段进行排序,python,pyspark,Python,Pyspark,我想将我的表按顺序id、poperty_名称、时间和值排列 我使劲地洗牌所有的组合 my_row = parsed1.map(lambda x: { "id": (str(x[3]) + ":" + str(x[0]) + ":" +str(x[1])), "property_name": x[4], "time" : x[1], "value": x[2], }) 我一直有订单时间,id,属性名称,值,我不明白为什么。这些x[0,…4]只表示我正在解析的J

我想将我的表按顺序id、poperty_名称、时间和值排列

我使劲地洗牌所有的组合

my_row =  parsed1.map(lambda x: {

    "id": (str(x[3]) + ":" + str(x[0]) + ":" +str(x[1])),
    "property_name": x[4],
    "time" : x[1],
    "value": x[2],
})

我一直有订单时间,id,属性名称,值,我不明白为什么。这些
x[0,…4]
只表示我正在解析的JSON对象中的字段。一切都正常,所有的提取都正常,但顺序不是。我需要精确的排序,因为这需要用Cassandra DB编写。

只需按您想要的顺序使用select:

sorted_df = df.select("id", "poperty_name", "time", "value")

select
语句将只保留数据框中的某些列,而删除所有其他列。您正在查找
sort
语句

当然,我假设您还需要指定特定维度的排序方式。我添加了一个额外的参数
desc
,以便您可以看到如何(在排序语句中)调整执行方式

以下是一个例子:

from pyspark.sql.functions import desc
my_row =  parsed1.map(lambda x: {

    "id": (str(x[3]) + ":" + str(x[0]) + ":" +str(x[1])),
    "property_name": x[4],
    "time" : x[1],
    "value": x[2],
})

sorted_my_row = my_row \
    .sort(col("id"), \
          col("property_name"), \
          col("time").desc(), \
          col("value"))