使用 SparkR 分组百分位数
Grouped percentile using SparkR
我想使用 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))
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
函数,但它的效率可能会低得多。
我想使用 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))
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
函数,但它的效率可能会低得多。