我想在不使用Spark.ML的情况下将RDD [Float]分离离散为10件,所以我需要计算10-Percentile,20th-Percentile ... 80th-Percentile,90-Percentile
数据集非常大,无法收集到本地!
有没有有效的算法来解决这个问题?
答案 0 :(得分:0)
已经提供此功能,您正在使用Spark版本> 2.0。您必须将RDD [Float]转换为数据帧。使用approxQuantile(String col, double[] probabilities, double relativeError)
中的DataFrameStatFunctions
。
从文档说:
此方法实现了Greenwald-Khanna算法的变体 (有一些速度优化)。该算法首次出现在 格林沃尔德的节省空间的在线计算分位数摘要 和Khanna