【发布时间】: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