【问题标题】:Count unique visitors across any time range analytics?在任何时间范围分析中计算唯一访问者?
【发布时间】:2017-04-05 02:30:59
【问题描述】:

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

示例:假设在第 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。

【问题讨论】:

  • 在我当前的解决方案中,我计划每小时计算新访客与前几个小时的比较。处理第 5 小时的数据时的示例,我计划计算以下内容: 1. 第 5 小时的唯一访问者,2. 第 5 小时的新访问者不在第 4 小时。 3. 第 5 小时的新访问者不在小时3 小时和 4 小时等等....
  • 你应该看看 spark 流,它有很多内置的 transformations and window operations 你的用例需要。

标签: hadoop apache-spark hive bloom-filter hyperloglog


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多