TakeOrdered по убыванию Pyspark
Я хотел бы отсортировать 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])
Ответы
Ответ 1
Сортировка по ключам (по возрастанию):
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])