这篇文章给大家分享的是有关HyperLogLog函数在Spark中的如何应用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
预聚合是数据分析领域的一个强大的技术手段,前提就是所要计算的指标是可重聚合的。聚合操作,顾名思义,是满足结合律的,所以很容易引入再聚合操作,因为聚合操作可以再被进一步聚合。Counts 可以在通过 SUM 再聚合,最小值可以通过 MIN 再聚合,最大值也可以通过 MAX 再聚合。而 distinct counts 是特例,无法做再聚合,例如,不同网站访问者的 distinct count 的总和并不等于所有网站访问者的 distinct count 值,原因很简单,同一个用户可能访问了不同的网站,直接求和就存在了重复统计的问题。
Distinct count 的不可再聚合的特性造成了很大的影响,计算 distinct count 必须要访问到最细粒度的数据,更进一步来说,就是计算 distinct count 的查询必须读取每一行数据。
Map (每个 partition)
初始化 HLL 数据结构,称作 HLL sketch
将每个输入添加到 sketch 中
发送 sketch
Reduce
聚合所有 sketch 到一个 aggregate sketch 中
Finalize
计算 aggregate sketch 中的 distinct count 近似值
hll_init_agg
), reaggregation (通过
hll_merge
) 和 presentation (通过
hll_cardinality
)。
99+%的数据仅通过 Spark 进行管理,没有重复
在预聚合阶段,99+%的数据通过 Spark 处理
交互式查询响应时间大幅缩短,处理的数据量也大幅较少
感谢各位的阅读!关于“HyperLogLog函数在Spark中的如何应用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。