如何对火花进行分位数离散化?

Posted

技术标签:

【中文标题】如何对火花进行分位数离散化?【英文标题】:how to quantile-discretize on spark? 【发布时间】:2017-09-14 14:16:48 【问题描述】:

我想在没有 Spark.ML 的情况下将 RDD[Float] 分位数离散化为 10 个,所以我需要计算 10th-Percentile, 20th-Percentile...80th-Percentile,90th-Percentile

数据集很大,无法收集到本地!

有什么有效的算法来解决这个问题?

【问题讨论】:

【参考方案1】:

如果您使用的是 Spark 版本 > 2.0,则已提供此功能。您必须将您的 RDD[Float] 转换为数据框。使用来自DataFrameStatFunctionsapproxQuantile(String col, double[] probabilities, double relativeError)。 从文档中说:

此方法实现了 Greenwald-Khanna 算法的变体 (有一些速度优化)。该算法最早出现在 Greenwald 的分位数摘要的节省空间的在线计算 和卡纳

【讨论】:

以上是关于如何对火花进行分位数离散化?的主要内容,如果未能解决你的问题,请参考以下文章

如何理解概率分布的分位数和上侧分位数?

如何在 Matlab 中加快对分位数的调用?

分位数回归—R语言实现

聊聊python的分位数

【R语言】--- 箱型图

什么是分位数,如何计算分位数?