【发布时间】:2016-06-06 23:30:32
【问题描述】:
我正在尝试计算 DataFrame 中列的百分位数?我在 Spark 聚合函数中找不到任何 percentile_approx 函数。
例如在 Hive 中,我们有 percentile_approx ,我们可以通过以下方式使用它
hiveContext.sql("select percentile_approx("Open_Rate",0.10) from myTable);
但出于性能原因,我想使用 Spark DataFrame 来实现。
样本数据集
|User ID|Open_Rate|
-------------------
|A1 |10.3 |
|B1 |4.04 |
|C1 |21.7 |
|D1 |18.6 |
我想知道有多少用户属于 10% 或 20% 等。我想做这样的事情
df.select($"id",Percentile($"Open_Rate",0.1)).show
【问题讨论】:
-
使用 SQL 查询和 DataFrame 之间没有性能差异 - 都使用相同的执行引擎。
-
您可以使用自己的 UDAF。我就是这样做的:stackoverflow.com/a/51859138/2166220
标签: scala apache-spark apache-spark-sql spark-dataframe