Я оцениваю механизмы распределенных запросов для аналитических запросов (как интерактивных, так и пакетных) для крупномасштабных данных (~ 100 ГБ). Одним из требований является низкая задержка (‹= 1 с) для запросов с числом различных, где допустимы приблизительные результаты (с ошибкой до 5%).
Presto, похоже, поддерживает это с помощью функции proc_distinct(). Насколько я понимаю, для этого используется HyperLogLog. Однако, если данные не сохраняются в свернутой форме вместе со значениями HyperLogLog, их придется вычислять на лету. Я не думаю, что мои запросы завершатся в течение секунды для больших наборов данных.
Поддерживает ли он сводку с вычислением HyperLogLog во время приема (аналогично Druid)? Учитывая, что, в отличие от Druid, Presto запрашивает данные из внешних хранилищ (Hive/Cassandra/RDBMS и т. д.), я не уверен, что сводки времени приема поддерживаются, если их не поддерживает собственное хранилище Presto. Кто-нибудь может подтвердить?