расчет приблизительных процентилей - PullRequest
0 голосов
/ 29 апреля 2020

При использовании функции sparks percentiles_approx для вычисления приблизительных процентилей в декларативном SQL, иногда сгруппированных, я замечаю, что эта функция мучительно медленная. Я уже снизил точность до 100 (требуется около 5 минут для агрегации) или иногда до 1000 (20-30 минут). Это в 10 раз ниже, чем значение по умолчанию с точностью 10 КБ.

Я наблюдаю, что результирующие процентили как бы совпадают, но когда мы действительно углубляемся в детали и вычисляем их для многих групп, т.е. по одному на каждый день, они не соответствуют все. Фактически, при предварительной агрегации данных в максимально возможной степени и сохранении всех числовых столбцов c (т. Е. Отбрасывая любой нечисловой c столбец с интенсивным объемом памяти) можно использовать простую медиану pandas, которая равна 1 ) точный и 2) быстрее, чем Spark.

Я выбираю слишком низкую точность? Но 1000 уже занимает очень много времени для вычисления (у меня >> 1 агрегация), поэтому 5 против 25 минут быстро умножается.

Как может быть, что Pandas так быстро? Из-за векторизации?

Каковы подходящие параметры здесь в отношении компромисса между скоростью и точностью?

Будет ли t-дайджест https://github.com/tdunning/t-digest

...