zoukankan      html  css  js  c++  java
  • Python 操作 mongodb 亿级数据量使用 Bloomfilter 高效率判断唯一性 例子

    工作需要使用 python 处理 mongodb 数据库两亿数据量去重复,需要在大数据量下快速判断数据是否存在

    参考资料:https://segmentfault.com/q/1010000000613729

    网上了解到 Bloom Filter ,Bloom filter 是由 Howard Bloom 在 1970 年提出的二进制向量数据结构,它具有很好的空间和时间效率,被用来检测一个元素是不是集合中的一个成员。

    关于 Bloom Filter 的详细介绍请参考:百度百科

    使用Python可直接安装 Pybloom 包,这里已经实现了 Bloom Filter。

    安装 Pybloom 包过程曲折,报错及解决办法在此:windows下python3.7安装pybloom报错解决办法

    包安装成功后就可以愉快的使用了

    使用例子如下:

    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/72970887

    BloomFilter 是一个定容的过滤器,error_rate 是指最大的误报率是0.1%(可以省略),capacity 是容量大小,而 ScalableBloomFilter 是一个不定容量的布隆过滤器,它可以不断添加元素。add 方法是添加元素,如果元素已经在布隆过滤器中,就返回 true,如果不在返回 fasle 并将该元素添加到过滤器中。判断一个元素是否在过滤器中,只需要使用 in 运算符即可了。


    简单易用的一个 Python 库,希望对大家有帮助。 

  • 相关阅读:
    Linux 安装中文man手册
    centos6.9使用NTFS-3G挂载ntfs文件系统
    Linux基础知识之挂载详解(mount,umount及开机自动挂载)
    技术点总结
    SQL 分组后获取其中一个字段最大值的整条记录 【转载】
    线程池之ThreadPool类与辅助线程
    Task.Run使用默认线程池
    VS生成事件
    线程池之ThreadPoolExecutor使用
    Sql笔记
  • 原文地址:https://www.cnblogs.com/ExMan/p/11040991.html
Copyright © 2011-2022 走看看