按价值订购RDD - Pyspark

时间:2018-05-29 10:32:38

标签: apache-spark dataframe pyspark rdd

我有一个RDD:

myRDD = [(u'9973', u'Group 1'), (u'9890', u'Group 2'), (u'98728', u'Round of 
16'), (u'98270', u'Group 1'), (u'9794', u'Group 4'), (u'96924', u'Final'), 
(u'9624', u'Group 2'), (u'9624', u'Group 2'), (u'9622', u'Group 1'), 
(u'96000', u'Group A'), (u'9591', u'Group 2'), (u'95261', u'Group 1'), 
(u'9511', u'Group 2'), (u'95000', u'Group 3'), (u'94493', u'Semi-finals'), 
(u'94194', u'Final'), (u'93869', u'Group A'), (u'93869', u'Group A'), 
(u'93194', u'Group B'), (u'92570', u'Group 1')]

这将显示RDD的前20个元素。我已经将RDD排序为

  

myRDD.sortByKey(True)并尝试了myRDD.sortBy(lambda x:x [0])

但是,值仍未按降序排列。

知道我可能做错了吗?

另外,如何在数据框中实现相同的目标?

1 个答案:

答案 0 :(得分:0)

sortByKey对键而不是值进行排序,sortByKey(True)表示键的升序,False表示降序。如果您只需要可以使用的值"值"转换对RDD,那么你可以用自己提供的订单来订购。使用Dataframe,我认为您可以使用spark.sql并编写类似sql的查询以按降序获取结果。我不会在python中使用spark,但逻辑是一样的。