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?