Return RDD der größten N Werte von einem anderen RDD in SPARK

Ich versuche, eine RDD von Tupeln zu filtern, um die größten N Tupel basierend auf Schlüsselwerten zurückzugeben. Ich brauche das Rückgabeformat, um ein RDD zu sein.

So die RDD:

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

gefiltert nach den größten 3 Schlüsseln sollte die RDD zurückgeben:

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

Ein @ tsortByKey() und danntake(N) gibt die Werte zurück und führt nicht zu einer RDD, sodass dies nicht funktioniert.

Ich könnte alle Schlüssel zurückgeben, sie sortieren, den N-größten Wert finden und dann die RDD nach größeren Schlüsselwerten filtern, aber das scheint sehr ineffizient zu sein.

Was wäre der beste Weg, dies zu tun?