有人可以解釋或鏈接到關於如何計算HLL集的基數可用於時間序列分析的解釋嗎?如何將hyperloglog應用於時間序列流
我很確定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
的,這將有問題的只是一個是,你需要通過每個第二迭代在給定的範圍內找出最後一分鐘特定事件的計數。
我想了解如何在一般情況下使用HLL實現時間序列聚合,但我提到了德魯伊,因爲它是一個項目的例子。我正在尋找關於如何在沒有任何特定的庫或數據庫的情況下單獨使用HLL來完成此操作的一般說明。 –
這些資源可能有所幫助 - https://www.youtube.com/watch?v=Hpd3f_MLdXo - http://metamarkets.com/2012/fast-cheap-and-98-right-cardinality-estimation-for-big-資料/ – user3512891
啊!如果我從該視頻中獲得了正確的信息,那麼您**每個記錄**都會存儲一個HLL草圖**(因此,如果數據的粒度爲1秒,則每秒有1個HLL草圖)。您可以通過使用一些分片存儲解決方案(如s3)將存儲分割到多個分區來處理存儲需求。 –