Возврат 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 по значениям ключа, превышающим это, но это кажется очень неэффективным.
Каков был бы лучший способ сделать это?