Python 操作mongodb億級資料量使用 Bloomfilter 去重例子
阿新 • • 發佈:2018-12-12
工作需要使用 python 處理 mongodb 資料庫兩億資料量去重複,需要在大資料量下快速判斷資料是否存在
網上了解到 Bloom Filter ,Bloom filter 是由 Howard Bloom 在 1970 年提出的二進位制向量資料結構,它具有很好的空間和時間效率,被用來檢測一個元素是不是集合中的一個成員。
關於 Bloom Filter 的詳細介紹請參考:百度百科
使用Python可直接安裝 Pybloom 包,這裡已經實現了 Bloom Filter。
包安裝成功後就可以愉快的使用了
使用例子如下:
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
BloomFilter 是一個定容的過濾器,error_rate 是指最大的誤報率是0.1%(可以省略),capacity 是容量大小,而 ScalableBloomFilter 是一個不定容量的布隆過濾器,它可以不斷新增元素。add 方法是新增元素,如果元素已經在布隆過濾器中,就返回 true,如果不在返回 fasle 並將該元素新增到過濾器中。判斷一個元素是否在過濾器中,只需要使用 in 運算子即可了。
簡單易用的一個 Python 庫,希望對大家有幫助。