使用 SparkR 分组百分位数
Posted
技术标签:
【中文标题】使用 SparkR 分组百分位数【英文标题】:Grouped percentile using SparkR 【发布时间】:2018-08-28 02:12:40 【问题描述】:我想使用 SparkR 计算分组百分位数。我试过这个
library(SparkR)
mtcars_spark %>%
SparkR::groupBy("cyl") %>%
SparkR::summarize(p75 = approxQuantile("mpg", 0.75, 0.01),
p90 = approxQuantile("mpg", 0.90, 0.01),
p99 = approxQuantile("mpg", 0.99, 0.01))
...但是,得到了这个错误:
unable to find an inherited method for function ‘approxQuantile’ for signature ‘"GroupedData", "character", "numeric", "numeric"’
如何使用 SparkR 获得分组百分位数,以便所需的输出与以下代码中的相同:
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise(p75 = quantile(mpg, 0.75),
p90 = quantile(mpg, 0.90),
p99 = quantile(mpg, 0.99))
【问题讨论】:
【参考方案1】:approxQuantile
是一种在 Datasets
上运行的方法 - 它没有在 *GroupedDataset
上运行的变体。如果您启用了 Hive 支持,则使用 Hive 的 percentile
UDF:
mtcars_spark %>%
SparkR::groupBy("cyl") %>%
SparkR::summarize(p75 = expr("percentile(mpg, 0.75)"),
p90 = expr("percentile(mpg, 0.90)"),
p99 = expr("percentile(mpg, 0.99)"))
如果没有,您可以尝试gapply
函数,但它的效率可能要低得多。
【讨论】:
是否需要加载任何库才能使用 Hive 的百分位数功能? 哇...这工作!谢谢!!我可以在哪里阅读更多相关信息? Hive Language Manual - UDF section。也可以查看***.com/q/52049152/6910411和***.com/q/34519549/6910411以上是关于使用 SparkR 分组百分位数的主要内容,如果未能解决你的问题,请参考以下文章
Pandas .. 分位数函数是不是需要排序数据来计算百分位数?
JavaScript中的分位数/百分点/百分位数/逆累积分布函数
按百分位数将类似 sql 的查询的结果分组:在 Redshift / postgresql