一個 Java 庫,用於匯總無法儲存所有事件的流中的資料。更具體地說,有一些用於估計的類別:基數(即計算事物);設定成員資格; top-k 元素和頻率。一項特別有用的功能是具有相容配置的基數估計器可以安全地合併。
這些類別可以直接在 JVM 專案中使用,或與提供的 shell 腳本和良好的舊 Unix IO 重定向一起使用。
這裡的想法並非我們原創。我們努力透過迭代現有的學術文獻來創建有用的實現。因此,這個庫在很大程度上依賴其他人的工作。請閱讀來源和參考部分。
$ echo -e "foonfoonbar" | ./bin/topk
item count error
---- ----- -----
foo 2 0
bar 1 0
Item count: 3
$ echo -e "foonfoonbar" | ./bin/cardinality
Item Count Cardinality Estimate
---------- --------------------
3 2
< dependency >
< groupId >com.clearspring.analytics</ groupId >
< artifactId >stream</ artifactId >
< version >2.9.5</ version >
</ dependency >
假設您已安裝並設定 Apache Maven:
mvn package
你應該已經準備好了。
電子郵件清單:http://groups.google.com/group/stream-lib-user
設定的成員資格代碼是 2009 年 12 月左右 Apache Cassandra 的 Bloom Filter 實作。 Apache Software Foundation 標頭已保留在這些文件上。透過擴展,我們還包括 murmurhash。
我們使用這段程式碼的靈感來自於 Jonathan Ellis 的文章《你想知道的關於寫布隆過濾器的一切》。
有特定論文的 javadoc 參考。這些是我們在研究過程中發現最相關的。
蔡敏、潘建平、郭於國、黃凱。使用自適應基數計數快速且準確地測量流量矩陣。 MineNet '05:2005 年 ACM SIGCOMM 挖礦網路資料研討會論文集,第 205–206 頁,美國紐約州紐約市,2005 年。
艾哈邁德·梅特瓦利、迪維亞坎特·阿格拉瓦爾和阿姆爾·E·阿巴迪。如果我們可以線性化,為什麼要採用對數? :實現有效的搜尋流量的不同計數。 EDBT '08:第 11 屆擴展資料庫技術國際會議論文集,第 618-629 頁,美國紐約州紐約市,2008 年。
尼可斯·恩塔莫斯、彼得·特里安塔菲盧和格哈德·韋庫姆。大規模計數:互聯網規模資料網路中的有效基數估計。 ICDE '06:第 22 屆國際資料工程會議論文集,第 40 頁,美國華盛頓特區,2006 年。
瑪麗安杜蘭德和菲利普弗拉霍萊。大基數的 LogLog 計數。 ESA03,LNCS 第 2832 卷,第 605-617 頁,2003 年。
Kyu Y. Whang、Brad T. Vander Zanden 和 Howard M. Taylor。用於資料庫應用程式的線性時間機率計數演算法。 ACM 翻譯。資料庫系統,15(2):208–229,1990。
摩西·查里卡 (Moses Charikar)、凱文·陳 (Kevin Chen) 和馬丁·F·科爾頓 (Martin F. Colton)。尋找資料流中的頻繁項。載於 ICLP '02:第 29 屆國際自動機研討會論文集,語言與編程,第 693-703 頁,英國倫敦,2002 年。
史特凡赫勒、馬克南凱瑟、亞歷克斯霍爾。 HyperLogLog 實踐:最先進的基數估計演算法的演算法工程。 EDBT 2013 會議論文集,ACM,義大利熱那亞
金澈清、錢偉寧、沙超峰、於傑弗瑞和周傲英。動態維護資料流上的頻繁項目。 CIKM '03:第十二屆資訊與知識管理國際會議論文集,第 287-294 頁,美國紐約州紐約市,2003 年。 10.1145/956863.956918 http://dl.acm.org/itation.cfm?id=956918
艾哈邁德·梅特瓦利、迪維亞坎特·阿格拉瓦爾和阿姆魯·阿巴迪。資料流中頻繁元素和前 k 元素的高效計算。第 398-412 頁。 2005.10.1007/978-3-540-30570-5_27 http://link.springer.com/chapter/10.1007/978-3-540-30570-5_27