我想按值对K / V对进行排序,然后取最大的五个值。我设法用第一个地图恢复K / V,用FALSE降序排序,然后将key.value反转到原始(第二个地图),然后取前面的5个bigget,代码是这样的:
RDD.map(lambda x:(x[1],x[0])).sortByKey(False).map(lambda x:(x[1],x[0])).take(5)
我知道pySpark上有一个takeOrdered动作,但我只设法对值进行排序(而不是键),我不知道如何进行降序排序:
RDD.takeOrdered(5,key = lambda x: x[1])
答案 0 :(得分:68)
按键排序(升序):
RDD.takeOrdered(5, key = lambda x: x[0])
按键排序(降序):
RDD.takeOrdered(5, key = lambda x: -x[0])
按值排序(升序):
RDD.takeOrdered(5, key = lambda x: x[1])
按值排序(降序):
RDD.takeOrdered(5, key = lambda x: -x[1])