有人可以解释或链接到有关如何使用 HLL 计算集合的基数可用于时间序列分析的解释吗?
我很确定druid.io确实做到了这一点,但我正在寻找一个关于如何单独使用 HLL 来做到这一点的一般解释,没有任何特定的库/数据库或特定的 HLL 实现。
一种天真的方法是在我们正在计算的事物上加上时间戳。例如,以redis HLL API 为例,如果您正在计算事件,从第 1000001 秒到第 1000060 秒:
PFADD SOMEHLLVAR "1000001-event1" "1000001-event2" ...
PFADD SOMEHLLVAR "1000002-event1" "1000002-event3" ...
PFADD SOMEHLLVAR "1000003-event2" "1000003-event3" ...
# Get count of occurrences of event1 in a minute long range:
PFCOUNT "1000001-event1" -> 1
PFCOUNT "1000002-event1" -> 1
PFCOUNT "10000..-event1" -> ..
PFCOUNT "1000060-event1" -> 0
...add all numbers! -> 2
这将遇到的一个问题是,您需要在给定范围内的每一秒进行迭代,以找出最后一分钟特定事件的计数。