¿Cómo calcular el percentil de la columna en un DataFrame en chispa?

Estoy tratando de calcular el percentil de una columna en un DataFrame? No puedo encontrar ninguna función percentile_approx en las funciones de agregación de Spark.

Por ej. en Hive tenemos percentile_approx y podemos usarlo de la siguiente manera

hiveContext.sql("select percentile_approx("Open_Rate",0.10) from myTable); 

Pero quiero hacerlo usando Spark DataFrame por razones de rendimiento.

Conjunto de datos de muestra

|User ID|Open_Rate|
------------------- 
|A1     |10.3     |
|B1     |4.04     |
|C1     |21.7     |
|D1     |18.6     |

Quiero saber cuántos usuarios caen en el percentil 10 o el percentil 20 y así sucesivamente. Quiero hacer algo como esto

df.select($"id",Percentile($"Open_Rate",0.1)).show

Respuestas a la pregunta(2)

Su respuesta a la pregunta