Подтвердить что ты не робот

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])
4b9b3361

Ответ 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])