Поддержка 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 и т. Д.
Вы можете скачать исходный код здесь. После загрузки и некоторой простой настройки вы можете выполнить запрос, как обычно, и получить результаты за гораздо более короткое время.