Presto支持about_distinct

时间:2017-08-14 12:36:53

标签: presto approximate hyperloglog

我正在评估分布式查询引擎,用于大规模数据(~100GB)的分析查询(交互式和批量式)。其中一个要求是计数不同查询的低延迟(<= 1s),其中可接受近似结果(误差高达5%)。

Presto似乎用它的approx_distinct()来支持它。据我所知,它使用HyperLogLog。但是,除非数据以卷起的形式持久存在,否则HyperLogLog值必须在运行时进行计算。我不认为我的查询会在一秒钟内完成大型数据集。

它是否支持在摄取时使用HyperLogLog计算汇总(类似于德鲁伊)?鉴于与Druid不同,Presto从外部存储(Hive / Cassandra / RDBMS等)查询数据,我不确定是否支持提取时间汇总,除非Presto的本地存储支持它们。有人可以确认吗?

2 个答案:

答案 0 :(得分:1)

没有“Presto的本地商店”这样的东西。 Presto是具有连接器架构的查询执行引擎,允许插入多个存储层。

如果你想要整个数据集的近似计数 - 不同,你可以计算表统计数据(当使用带有Hive的Presto时,这当前需要在Hive中完成)。

如果您想要动态选择数据的近似计数,则仍需要读取数据。然后,您将无法获得具有如此大数据集的第二延迟。但是,您可以将approx_distinct(或使用普通count(distinct ..))与TABLESAMPLE结合使用,以限制所读数据的大小。

答案 1 :(得分:0)

您可以尝试Verdict,这可以通过应用统计信息和近似查询处理显着降低查询处理成本,准确率达到99.9%。它运行在所有基于SQL的引擎上,包括Apache Hive,Apache Impala,Apache Spark,Amazon Redshift等。

您可以从here下载源代码。下载和一些简单的设置后,您可以像往常一样发出查询,并在更短的时间内获得结果。