Devuelve RDD de los mayores valores de N de otro RDD en SPARK

Estoy tratando de filtrar un RDD de tuplas para devolver las N tuplas más grandes basadas en valores clave. Necesito que el formato de devolución sea un RDD.

Entonces el RDD:

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

filtrado para las 3 claves más grandes debe devolver el RDD:

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

Haciendo unsortByKey() y entoncestake(N) devuelve los valores y no da como resultado un RDD, por lo que no funcionará.

Podría devolver todas las claves, ordenarlas, encontrar el enésimo valor más grande y luego filtrar el RDD por valores de clave mayores que eso, pero eso parece muy ineficiente.

Cuál sería la mejor forma de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta