布隆过滤器的学习之路

简介:工作中可能会遇到,处理大批量数据的去重工作,例如爬虫,数据清洗,需要在大数据量下判断数据是否存在。如果我们对于判断的准确性稍微放松一些,就可以,

评估:如果你的数据量不大,在千万以下,并且拥有redis资源充分,可以使用MD5的hash算法生成32位指纹,利用redis进行数据去重,如果亿级别甚至更多的数据量,就要考虑资源问题,毕竟redis的价格还是很贵的,这时候就可以利用布隆过滤。或者利用类似redis的,ssdb数据库,效率可能会低一些,但是也是很高的,只是稍逊色于redis。并且基于硬盘,很便宜。

def md5_(self,str):
    md5 = hashlib.md5()
    data = str
    md5.update(data.encode('utf-8'))
    return md5.hexdigest()

1,安装

pip3 install pybloom_live

该模块包含两个类实现布隆过滤器功能。

BloomFilter是定容。 ScalableBloomFilter可以自动扩容。initial_capacity是容量,error_rate是误报率。

from pybloom_live import ScalableBloomFilter
sbf = ScalableBloomFilter(initial_capacity=1000000000, error_rate=0.000001, mode=ScalableBloomFilter.LARGE_SET_GROWTH)
url = "www.toutiao.com"
url2 = "www.douban.com"
sbf.add(url)
print(url in sbf)   # True
print(url2 in sbf)  # False

超过误报率时抛出异常,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值