在BigQuery中实现APPROX_TOP_COUNT所使用的算法是什么?

3

BigQuery 表示,近似聚合函数在内存使用和时间方面具有可扩展性,但会生成近似结果而不是精确结果。

我在 Drill 或 Hive 中找不到类似的函数。通过集群计算,我们可以轻松获得精确结果,那么为什么以及何时应该使用这个 APPROX_FUNC 呢?我也希望有人能告诉我 APPROX_TOP_COUNT 中使用了哪种算法。

1个回答

2
一种使用近似函数的实用例子是分析 Firebase 事件日志(在 StackOverflow 上有关于 BigQuery/Firebase 的许多问题)。例如,如果你只想知道前 10 个最受欢迎的页面,你可以使用 APPROX_TOP_COUNT 进行分析,这通常比使用 COUNT(*)GROUP BYORDER BY ... LIMIT ... 更快。

从实现的角度来看,你可以想象,如果你只对前 10 个最受欢迎的页面感兴趣,那么可能没有必要为不经常访问的页面保留状态,因为它后面肯定会被丢弃。

您可以阅读以下论文了解近似算法:


谢谢您的回答,我已经在bigquery的publicdata(1,108,779,463行)上使用了APPROX_TOP_COUNT进行测试。结果是APPROX_TOP_COUNT和COUNT(*)与GROUP BY和ORDER BY ... LIMIT一起使用都花费了2秒钟。您能否告诉我这两个查询的性能方面的一些例子? - cxco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接