Wie berechne Perzentil der Spalte in einen DataFrame in der Funke?

Ich versuche zu berechnen Perzentil einer Spalte in einem DataFrame? Ich kann nicht finden, percentile_approx Funktion in der Funke-aggregation-Funktionen.

Z.B. im Hive-wir haben percentile_approx und wir können es verwenden, in der folgenden Weise

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

Aber ich will es tun, mit Funken DataFrame aus performance-Gründen.

Beispiel-Datensatz

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

Ich soll herausfinden, wie viele Benutzer fallen in 10% - Perzentil oder 20% - Perzentil und so weiter. Ich möchte so etwas wie dies tun

df.select($"id",Percentile($"Open_Rate",0.1)).show
  • Es gibt keine performance-Unterschied zwischen der Verwendung von SQL-Abfragen und-DataFrame - beide verwenden die gleiche Ausführung-Motor.
  • Sie können Ihre eigenen UDAF. Das ist, wie ich es getan habe : stackoverflow.com/a/51859138/2166220
InformationsquelleAutor dheee | 2016-06-06
Schreibe einen Kommentar