Поддержка PrestoDB для прибл.

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

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

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

2 ответа

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

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

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

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

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

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