【问题标题】:Presto's support for approx_distinctPresto 对 approx_distinct 的支持
【发布时间】:2018-01-22 07:16:54
【问题描述】:

我正在评估分布式查询引擎,用于对大规模数据(~100GB)进行分析查询(交互式查询和批处理查询)。要求之一是计数不同的查询的低延迟(

Presto 似乎通过它的 approx_distinct() 来支持这一点。据我了解,它为此使用了 HyperLogLog。但是,除非数据以汇总形式与 HyperLogLog 值一起保存,否则必须动态计算。对于大型数据集,我认为我的查询不会在一秒钟内完成。

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

【问题讨论】:

    标签: presto approximate hyperloglog


    【解决方案1】:

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

    如果您想要整个数据集的近似计数不同,您可以计算表统计信息(当使用 Presto 和 Hive 时,目前需要在 Hive 中完成)。

    如果您想要动态选择数据的近似计数不同,您仍然需要读取数据。这样大数据集就不会出现第二次延迟。但是,您可以将approx_distinct(或使用普通count(distinct ..))与TABLESAMPLE 结合起来,以限制读取的数据大小。

    【讨论】:

    • 感谢@piotr-findeisen。查询将是对维度子集的近似计数不同的查询,在一个或多个维度上具有过滤器。关于 Presto 的本地商店,我指的是 this link 中的顺便提及。想知道现在是否已经生产了。感谢您提供指向 TABLESAMPLE 的指针。将探索它。
    • 也许这是关于 Raptor(连接器和数据存储合二为一),但我不会详细说明。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-04-15
      • 2013-11-25
      • 2018-12-20
      • 2013-12-02
      • 2016-05-07
      • 2023-03-06
      • 1970-01-01
      • 2021-12-16
      • 2016-09-13
      相关资源
      最近更新 更多