我们有一个用例,我们希望在任何时间范围内(小时粒度)报告我们应用中的唯一身份访问者。
示例:假设在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。
答案 0 :(得分:0)
您可以使用HyperLogLog算法。 HyperLogLog草图非常节省空间,可以轻松合并以构建联合。请参阅http://algo.inria.fr/flajolet/Publications/FlFuGaMe07.pdf。