使用 pySpark 对 RDD 中数组类型的值进行排序
Sorting values of an array type in RDD using pySpark
我有一个包含如下值的 RDD:
[
(Key1, ([2,1,4,3,5],5)),
(Key2, ([6,4,3,5,2],5)),
(Key3, ([14,12,13,10,15],5)),
]
我需要像这样对数组部分的值进行排序:
[
(Key1, ([1,2,3,4,5],5)),
(Key2, ([2,3,4,5,6],5)),
(Key3, ([10,12,13,14,15],5)),
]
我找到了两种Spark排序方式:sortBy
和sortbyKey
。我尝试了这样的 sortBy
方法:
myRDD.sortBy(lambda x: x[1][0])
但不幸的是,它根据数组的第一个元素对数据进行排序,而不是对数组元素本身进行排序。
此外,sortByKey
似乎无济于事,因为它只是根据键对数据进行排序。
如何实现有序的RDD?
尝试这样的事情:
rdd2 = rdd.map(lambda x: (x[0], sorted(x[1]), x[2] ))
我有一个包含如下值的 RDD:
[
(Key1, ([2,1,4,3,5],5)),
(Key2, ([6,4,3,5,2],5)),
(Key3, ([14,12,13,10,15],5)),
]
我需要像这样对数组部分的值进行排序:
[
(Key1, ([1,2,3,4,5],5)),
(Key2, ([2,3,4,5,6],5)),
(Key3, ([10,12,13,14,15],5)),
]
我找到了两种Spark排序方式:sortBy
和sortbyKey
。我尝试了这样的 sortBy
方法:
myRDD.sortBy(lambda x: x[1][0])
但不幸的是,它根据数组的第一个元素对数据进行排序,而不是对数组元素本身进行排序。
此外,sortByKey
似乎无济于事,因为它只是根据键对数据进行排序。
如何实现有序的RDD?
尝试这样的事情:
rdd2 = rdd.map(lambda x: (x[0], sorted(x[1]), x[2] ))