Python 操做 mongodb 億級數據量使用 Bloomfilter 高效率判斷惟一性 例子

工做須要使用 python 處理 mongodb 數據庫兩億數據量去重複,須要在大數據量下快速判斷數據是否存在python

參考資料:https://segmentfault.com/q/1010000000613729mongodb

網上了解到 Bloom Filter ,Bloom filter 是由 Howard Bloom 在 1970 年提出的二進制向量數據結構,它具備很好的空間和時間效率,被用來檢測一個元素是否是集合中的一個成員。數據庫

關於 Bloom Filter 的詳細介紹請參考:百度百科segmentfault

使用Python可直接安裝 Pybloom 包,這裏已經實現了 Bloom Filter。windows

安裝 Pybloom 包過程曲折,報錯及解決辦法在此:windows下python3.7安裝pybloom報錯解決辦法數據結構

包安裝成功後就能夠愉快的使用了大數據

使用例子以下:.net

from pybloom import BloomFilter

bf = BloomFilter(capacity=10000, error_rate=0.001)

bf.add("www.baidu.com")

print("www.baidu.com" in bf) # True

print("www.douban.com" in bf) # False
更具體的使用可參考:https://blog.csdn.net/preyta/article/details/72970887blog

BloomFilter 是一個定容的過濾器,error_rate 是指最大的誤報率是0.1%(能夠省略),capacity 是容量大小,而 ScalableBloomFilter 是一個不定容量的布隆過濾器,它能夠不斷添加元素。add 方法是添加元素,若是元素已經在布隆過濾器中,就返回 true,若是不在返回 fasle 並將該元素添加到過濾器中。判斷一個元素是否在過濾器中,只須要使用 in 運算符便可了。ci

簡單易用的一個 Python 庫,但願對你們有幫助。 

相關文章
相關標籤/搜索