Возврат RDD с наибольшим значением N из другого RDD в SPARK

Я пытаюсь отфильтровать RDD кортежей, чтобы получить наибольшее N кортежей на основе значений ключей. Мне нужен формат возврата, чтобы быть RDD.

Итак, СДР:

[(4, 'a'), (12, 'e'), (2, 'u'), (49, 'y'), (6, 'p')]

Отфильтрованные по самым большим 3 ключам должны вернуть СДР:

[(6,'p'), (12,'e'), (49,'y')]

ДелатьsortByKey() а потомtake(N) возвращает значения и не приводит к RDD, так что это не будет работать.

Я мог бы вернуть все ключи, отсортировать их, найти N-е наибольшее значение, а затем отфильтровать RDD по значениям ключа, превышающим это, но это кажется очень неэффективным.

Каков был бы лучший способ сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос