0

我们有一个用例,我们希望在任何时间范围(小时粒度)内报告应用中的唯一身份访问者。

示例:假设在第 0 小时我们有以下访客 {A, B, C, D} 并且在第 1 小时我们有 {C, D, E, F} ,在第 2 小时我们有 {E, F, A, B} 和在第 3 小时,我们有 {A, C}。我们需要回答在第 1 小时和第 3 小时之间有多少唯一身份访问者,同时应该能够回答在第 0 小时到第 3 小时之间有多少唯一身份访问者等?

当然,我们不能保存所有唯一访问者 ID,但我们可以保存给定小时的 BloomFilter。

我打算使用包含-排除属性来计算联合,但想看看是否有任何框架或某个框架有一个好的解决方案。

大数据技术:我们有 hdfs 设置、hive 以及 Spark、Kafka。

4

1 回答 1

0

您可以使用 HyperLogLog 算法。HyperLogLog 草图非常节省空间,可以轻松合并以构建联合。见http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf

于 2017-04-05T12:13:03.093 回答