Как квантиль-дискретизировать на искре?
Я хочу квантильно-дискретизировать RDD[Float] до 10 штук без Spark.ML, поэтому мне нужно вычислить 10-й процентиль, 20-перцентиль...80-перцентиль,90-перцентиль
набор данных очень большой, не может быть собран на локальный!
Есть ли эффективный алгоритм для решения этой проблемы?
1 ответ
Уже предусмотрена эта возможность, если вы используете Spark версии> 2.0. Вы должны преобразовать свой RDD[Float] в фрейм данных. использование approxQuantile(String col, double[] probabilities, double relativeError)
от DataFrameStatFunctions
, Из документации сказано:
Этот метод реализует разновидность алгоритма Гринвальда-Ханны (с некоторыми оптимизациями скорости). Алгоритм был впервые представлен Гринвальдом и Кханна в онлайн-вычислениях квантилей с эффективным использованием пространства.