Как квантиль-дискретизировать на искре?

Я хочу квантильно-дискретизировать RDD[Float] до 10 штук без Spark.ML, поэтому мне нужно вычислить 10-й процентиль, 20-перцентиль...80-перцентиль,90-перцентиль

набор данных очень большой, не может быть собран на локальный!

Есть ли эффективный алгоритм для решения этой проблемы?

1 ответ

Решение

Уже предусмотрена эта возможность, если вы используете Spark версии> 2.0. Вы должны преобразовать свой RDD[Float] в фрейм данных. использование approxQuantile(String col, double[] probabilities, double relativeError) от DataFrameStatFunctions, Из документации сказано:

Этот метод реализует разновидность алгоритма Гринвальда-Ханны (с некоторыми оптимизациями скорости). Алгоритм был впервые представлен Гринвальдом и Кханна в онлайн-вычислениях квантилей с эффективным использованием пространства.

Другие вопросы по тегам