我正在评估分布式查询引擎,用于对大规模数据(~100GB)进行分析查询(交互式查询和批处理查询)。要求之一是计数不同的查询的低延迟(<= 1s),其中近似结果(最多 5% 的错误)是可以接受的。
Presto 似乎通过它的 approx_distinct() 来支持这一点。据我了解,它为此使用了 HyperLogLog。但是,除非数据以汇总形式与 HyperLogLog 值一起保存,否则必须动态计算。对于大型数据集,我认为我的查询不会在一秒钟内完成。
它是否支持在摄取时使用 HyperLogLog 计算汇总(类似于 Druid)?鉴于与 Druid 不同,Presto 从外部存储(Hive/Cassandra/RDBMS 等)查询数据,我不确定是否支持摄取时间汇总,除非 Presto 的本机存储支持它们。有人可以确认吗?