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?