Поддержка Presto для proc_distinct

Я оцениваю механизмы распределенных запросов для аналитических запросов (как интерактивных, так и пакетных) для крупномасштабных данных (~ 100 ГБ). Одним из требований является низкая задержка (‹= 1 с) для запросов с числом различных, где допустимы приблизительные результаты (с ошибкой до 5%).

Presto, похоже, поддерживает это с помощью функции proc_distinct(). Насколько я понимаю, для этого используется HyperLogLog. Однако, если данные не сохраняются в свернутой форме вместе со значениями HyperLogLog, их придется вычислять на лету. Я не думаю, что мои запросы завершатся в течение секунды для больших наборов данных.

Поддерживает ли он сводку с вычислением HyperLogLog во время приема (аналогично Druid)? Учитывая, что, в отличие от Druid, Presto запрашивает данные из внешних хранилищ (Hive/Cassandra/RDBMS и т. д.), я не уверен, что сводки времени приема поддерживаются, если их не поддерживает собственное хранилище Presto. Кто-нибудь может подтвердить?


person Ameya    schedule 14.08.2017    source источник


Ответы (2)


Не существует такого понятия, как «родной магазин Presto». Presto — это механизм выполнения запросов с архитектурой коннектора, позволяющей подключать несколько уровней хранения.

Если вам нужен приблизительный подсчет для всего набора данных, вы можете вычислить статистику таблицы (при использовании Presto с Hive в настоящее время это необходимо делать в Hive).

Если вам нужен приблизительный подсчет для динамического выбора данных, вам все равно нужно прочитать данные. Тогда вы не доберетесь до второй задержки с таким большим набором данных. Однако вы можете комбинировать approx_distinct (или использовать обычный count(distinct ..)) с TABLESAMPLE. ограничить размер считываемых данных.

person Piotr Findeisen    schedule 14.08.2017
comment
Спасибо @piotr-findeisen. Запросы будут представлять собой приблизительные запросы с различным подсчетом по подмножеству измерений с фильтрами по одному или нескольким измерениям. Что касается собственного магазина Presto, я имел в виду мимолетное упоминание в этой ссылке. Было интересно, если это было произведено в настоящее время. Спасибо за ссылку на TABLESAMPLE. Будет исследовать его. - person Ameya; 16.08.2017
comment
Возможно, речь идет о Raptor (коннектор и хранилище данных в одном), но я не буду подробно останавливаться на этом. - person Piotr Findeisen; 16.08.2017

Вы можете попробовать Verdict, который может значительно сократить затраты на обработку запросов за счет применения статистики и приблизительной обработки запросов, обеспечивая точность 99,9 %. . Он работает на всех механизмах на основе SQL, включая Apache Hive, Apache Impala, Apache Spark, Amazon Redshift и т. д.

Исходный код можно загрузить с здесь. После загрузки и несложной настройки вы можете выполнить запрос, как обычно, и получить результаты за гораздо более короткое время.

person J. Doe    schedule 22.09.2017