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?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage