Spark - Как рассчитать процентили в кадре данных Spark 1.6? - PullRequest
0 голосов
/ 31 октября 2019

Я использую спарк 1.6. Мне нужно найти несколько процентилей для столбца в dataframe. Мои данные огромны, по крайней мере, 10 миллионов записей. Я пытался использовать контекст улья, как показано ниже:

hivecontext.sql("select percentile_approx(col,0.25),percentile_approx(col,0.5) from table")

Но этот подход очень медленный и занимает много времени. Я слышал о приблизительно Quantile, но, кажется, он доступен в версии 2.x. Есть ли альтернативный подход в spark 1.6, использующий фрейм данных spark для повышения производительности.

Я видел другой подход, использующий улей UDAF, как показано ниже

import org.apache.spark.sql.functions.{callUDF, lit}

df.agg(callUDF("percentile_approx", $"someColumn", lit(0.8)).as("percentile80"))

Улучшит ли этот подход производительность.

1 Ответ

0 голосов
/ 15 ноября 2019

Я использовал функцию процентиля_апрокса (столбец, массив (процентиль_значения)). Затем разделить возвращенный массив на отдельного человека. Улучшена производительность без многократного вызова функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...