我有一个包含如下值的 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] ))
关于apache-spark - 使用 pySpark 对 RDD 中数组类型的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69800935/