Cómo encontrar medianas y cuantiles usando Spark

¿Cómo puedo encontrar la mediana de unRDD de enteros que utilizan un método distribuido, IPython y Spark? losRDD tiene aproximadamente 700,000 elementos y, por lo tanto, es demasiado grande para recolectar y encontrar la mediana.

Esta pregunta es similar a esta pregunta. Sin embargo, la respuesta a la pregunta es usar Scala, que no sé.

¿Cómo puedo calcular la mediana exacta con Apache Spark?

Usando el pensamiento para la respuesta de Scala, estoy tratando de escribir una respuesta similar en Python.

Sé que primero quiero ordenar elRDD. No se como. veo elsortBy (Ordena este RDD por el dadokeyfunc) ysortByKey (Ordena estoRDD, que se supone que consiste en pares (clave, valor).) métodos. Creo que ambos usan el valor clave y miRDD solo tiene elementos enteros.

Primero, estaba pensando en hacermyrdd.sortBy(lambda x: x)?A continuación, encontraré la longitud de rdd (rdd.count())Finalmente, quiero encontrar el elemento o 2 elementos en el centro del rdd. Necesito ayuda con este método también.

EDITAR:

Tuve una idea. Tal vez pueda indexar miRDD y luego clave = índice y valor = elemento. ¿Y luego puedo intentar ordenar por valor? No sé si esto es posible porque solo hay unsortByKey método.

Respuestas a la pregunta(4)

Su respuesta a la pregunta