Retornar RDD dos maiores valores de N de outro RDD no SPARK

Estou tentando filtrar um RDD de tuplas para retornar as maiores N tuplas com base nos valores-chave. Eu preciso do formato de retorno para ser um RDD.

Então o RDD:

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

filtrado para as três maiores chaves deve retornar o RDD:

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

Fazendo umsortByKey() e depoistake(N) retorna os valores e não resulta em um RDD, para que não funcione.

Eu poderia retornar todas as chaves, classificá-las, encontrar o enésimo valor maior e filtrar o RDD para valores de chave maiores que isso, mas isso parece muito ineficiente.

Qual seria a melhor forma de fazer isso?

questionAnswers(2)

yourAnswerToTheQuestion