如何使用spark dataframe api用groupBy计算分位数?

时间:2017-07-31 14:37:36

标签: apache-spark spark-dataframe aggregate-functions

我有一些这样的数据:

id  country  salary
1     US      2000
2     US      3500
3     US      2600
4     JPN     2500
5     JPN     3800
6     CHN     2400
7     CHN     3200

我希望按国家/地区分组#34;然后计算75,95,99的工资分位数 我该怎么办? 有没有像计算平均值的方法,总和类似于

df.groupBy("country").agg(sum($"salary"))
and 
df.groupBy("country").agg(quantileFunction)

1 个答案:

答案 0 :(得分:2)

这是我为计算烛台图表/ Box&的分数而做的事情。胡须情节,百分位函数。在您的情况下,这可能有效:

df.registerTempTable("table1")
df2 = sqlContext.sql("Select id, 
                             country, 
                             percentile(salary, 75) as 75quant,
                             percentile(salary, 95) as 95quant,
                             percentile(salary, 99) as 99quant
                     from table1
                     group by country")