Como encontrar medianas e quantis usando o Spark
Como posso encontrar a mediana de umRDD
de números inteiros usando um método distribuído, IPython e Spark? oRDD
é de aproximadamente 700.000 elementos e, portanto, muito grande para coletar e encontrar a mediana.
Esta pergunta é semelhante a esta pergunta. No entanto, a resposta para a pergunta está usando Scala, que eu não sei.
Como posso calcular a mediana exata com o Apache Spark?
Usando o pensamento da resposta Scala, estou tentando escrever uma resposta semelhante em Python.
Eu sei que primeiro quero classificar oRDD
. Eu não sei como. eu vejo osortBy
(Classifica este RDD pelo dadokeyfunc
) esortByKey
(Classifica issoRDD
, que é assumido como composto por (chave, valor) pares.) métodos. Eu acho que ambos usam o valor da chave e meuRDD
possui apenas elementos inteiros.
myrdd.sortBy(lambda x: x)
?Em seguida, vou encontrar o comprimento do rdd (rdd.count()
)Finalmente, quero encontrar o elemento ou 2 elementos no centro do rdd. Também preciso de ajuda com este método.EDITAR:
Eu tive uma ideia Talvez eu possa indexar meuRDD
e, em seguida, chave = índice e valor = elemento. E então eu posso tentar classificar por valor? Não sei se isso é possível porque existe apenas umasortByKey
método.