`
twoidiots
  • 浏览: 1294 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

【转】海量数据处理专题

 
阅读更多
转自:http://blog.redfox66.com/post/2010/09/24/mass-data-topic-2-bloom-filter.aspx
【什么是Bloom Filter】

Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:在判断一个元素是否属于某个集合时,有可能会把不属于这个集合的元素误认为属于这个集合(false positive)。因此,Bloom Filter不适合那些“零错误”的应用场合。而在能容忍低错误率的应用场合下,采用Bloom Filter的数据结构,可以通过极少的错误换取了存储空间的极大节省。 这里有一篇关于Bloom Filter的详细介绍,不太懂的博友可以看看。

【适用范围】

可以用来实现数据字典,进行数据的判重,或者集合求交集

【基本原理及要点】

对于原理来说很简单,位数组外加k个独立hash函数。Bloom filter提供两种基本的操作,将元素加入集合和判断某一元素是否属于该集合,一下说明如何操作:

将一个元素加入集合:首先将要加入集合的元素用k个hash函数进行hash,得到k个hash index,然后在集合的位数组中将这k个hash index的位置置1,下面用两幅图来描述这个过程。

bloom filter位数组(集合)的初始状态



插入两个个元素,X1,X2:



bloom-filter-插入元素

查找元素是否属于该集合:首先同样用定义的hash函数对该元素进行hash得到hash index,然后查位数组中对应的hash index是否都是1,如果是,则表明该元素属于该集合,反之不属于【当然不全是了,请继续看后面】,如图,判断元素Y1,Y2是否属于该集合。




bloom-filter-判断元素是否属于集合

如上图,由于y1的三个hash index有一个不为1,因此不属于该集合,而y2所有的hash index的位置上都为1,因此属于该集合。




【Bloom Filter的不足】

很明显上面这个查找过程并不保证查找的结果是100%正确的。同时也不支持删除一个已经插入的关键字,因为该关键字对应的位会牵动到其他的关键字。所以一个简单的改进就是 counting Bloom filter,用一个counter数组代替位数组,就可以支持删除了。

还有一个比较重要的问题,如何根据输入元素个数n,确定位数组m的大小及hash函数个数。当hash函数个数k=(ln2)*(m/n)时错误率最小。在错误率不大于E的情况 下,m至少要等于n*lg(1/E)才能表示任意n个元素的集合。但m还应该更大些,因为还要保证bit数组里至少一半为0,则m应 该>=nlg(1/E)*lge 大概就是nlg(1/E)1.44倍(lg表示以2为底的对数)。

举个例子我们假设错误率为0.01,则此时m应大概是n的13倍。这样k大概是8个。

注意这里m与n的单位不同,m是bit为单位,而n则是以元素个数为单位(准确的说是不同元素的个数)。通常单个元素的长度都是有很多bit的。所以使用bloom filter内存上通常都是节省的。

【扩展】

Bloom filter将集合中的元素映射到位数组中,用k(k为哈希函数个数)个映射位是否全1表示元素在不在这个集合中。Counting bloom filter(CBF)将位数组中的每一位扩展为一个counter,从而支持了元素的删除操作。Spectral Bloom Filter(SBF)将其与集合元素的出现次数关联。SBF采用counter中的最小值来近似表示元素的出现频率。

【问题实例】

给你A,B两个文件,各存放50亿条URL,每条URL占用64字节,内存限制是4G,让你找出A,B文件共同的URL。如果是三个乃至n个文件呢?

根据这个问题我们来计算下内存的占用,4G=2^32大概是40亿*8大概是340亿,n=50亿,如果按出错率0.01算需要的大概是650亿个bit。 现在可用的是340亿,相差并不多,这样可能会使出错率上升些。另外如果这些urlip是一一对应的,就可以转换成ip,则大大简单了
分享到:
评论

相关推荐

    海量数据处理专题

    讲解在面试中经常出现的海量数据处理的解决方案,思路清晰,内容详实。

    LIDAR点云数据处理与应用.pdf

    LIDAR点云数据处理与应用是一篇探讨激光雷达(LIDAR)技术及其点云数据处理方法和应用的科技文献。文章主要分析了LIDAR点云数据的获取原理、分类处理方法,并以Microstation的terra模块数据为例,对LIDAR点云数据的...

    常见算法面试题--海量数据专题.doc

    在处理海量数据的问题时,我们需要考虑如何有效地利用有限的内存资源,以及如何设计高效的算法来降低时间复杂度。以下是对给定题目中各个问题的详细解答: 1. **找共同URL**: - 方案1:使用哈希函数将URL分配到小...

    智慧沈阳时空信息云平台建设项目(数据处理服务)顺利通过验收.pdf

    通过对海量、异构数据的采集、清洗、整合、分析和利用,数据处理服务可以将分散在城市不同角落、不同系统和不同平台上的数据进行有效集中和深度挖掘,从而形成有价值的信息和知识,为智慧城市的规划、管理和服务提供...

    Bigemap GIS数据海量解决方案.pdf

    【Bigemap GIS数据海量解决方案】是成都比格图数据处理有限公司提供的一项综合技术服务体系,旨在应对GIS领域的数据处理和开发应用挑战。该解决方案涵盖了数据中心、桌面端、移动端(APP)和WEB端,提供地图导航、...

    大数据203海量数据分布式开发.zip

    大数据203海量数据分布式开发课程主要探讨了在面对PB级甚至EB级数据时,如何有效地进行数据存储、处理和分析。在这个专题中,我们将深入理解大数据的核心概念、技术架构以及分布式系统的运作原理。 首先,大数据的...

    大数据处理资料

    大数据处理是信息技术领域的一个核心概念,它涉及到对海量、高增长速率、多样化的信息资产的采集、存储、分析和解释。大数据处理的目标是通过高效的数据挖掘技术,从这些庞杂的数据中提取出有价值的信息,为企业决策...

    基于云计算的摄影测量数据处理模型设计研究.pdf

    通过上述知识点的深入解析,可以看出云计算在摄影测量数据处理领域的应用是多方面的,它不仅能够提供足够的计算能力以满足海量数据处理的需求,还能通过云计算架构实现更加高效和灵活的数据处理流程。这一领域的研究...

    精品专题(2021-2022年收藏)MATLAB工具箱在测绘数据处理中的应用.doc

    MATLAB工具箱在测绘数据处理中的应用是一个重要的专题,它涉及到现代测绘科学的多个关键环节。MATLAB,全称为Matrix Laboratory,是由MathWorks公司开发的一款强大的科学计算软件,以其高效的数据处理能力和矩阵运算...

    2020年中国AI数据服务专题研究报告.pdf

    1. **数据采集与处理**:随着物联网技术的发展,海量数据的采集变得更加便捷高效。同时,利用大数据处理技术对这些数据进行清洗、标注、存储和管理成为关键技术之一。 2. **数据安全与隐私保护**:在数据采集和使用...

    深入剖析海量数据场景下的用户行为分析方案.rar

    本专题“深入剖析海量数据场景下的用户行为分析方案”旨在探讨如何有效地处理和利用这些数据,以便更好地理解用户行为,优化产品设计,提升用户体验,并驱动业务增长。 首先,用户行为分析的核心是收集数据。这涉及...

    h3c 网络之路数据中心专题

    大数据章节可能会介绍数据处理、存储和分析的方法,以及大数据平台如Hadoop的使用。物联网部分则可能讨论了物联网设备的接入管理,以及如何确保数据中心的安全性面对海量的物联网数据。 此外,这两份教材很可能还...

    专题资料(2021-2022年)大数据数据分析方法、数据处理流程实战案例.docx

    大数据数据分析方法是指利用海量数据进行深度挖掘,揭示其中的规律、模式和趋势,以便于决策和优化业务。在这个过程中,常见的方法包括描述性分析、预测性分析、诊断性分析和规范性分析。 1. 描述性分析:这种分析...

    高速铁路路基变形数据处理系统研究与应用.pdf

    本文针对的《高速铁路路基变形数据处理系统研究与应用》是一篇针对高速铁路路基施工过程中沉降观测数据管理和分析的专题研究文章,它详细介绍了数据处理系统的设计原理、功能特点以及在实际中的应用效果。...

    大数据背景下谈电力运营监控数据处理技术.pdf

    总的来说,大数据技术在电力运营监控中的应用,不仅提高了数据处理的效率,还帮助企业从海量数据中提炼出有价值的信息,支持决策制定,推动电力行业的持续改进和发展。结合参考文献和专业指导,电力企业可以构建更...

    数据专题研究报告(深度):数据科学专题报告.zip

    数据科学是信息技术领域的一个重要分支,它涉及到统计学、计算机科学和领域专业知识的融合,用于从海量数据中发现模式、预测趋势并驱动决策。这份"数据专题研究报告(深度):数据科学专题报告"深入探讨了这个领域的...

    航空摄影测量在矿山建设数据处理中的应用研究.pdf

    表1列出了矿山建设数据处理系统的主要内容,其中基础地理空间数据库和矿山专题图形数据库的构建,很大程度上依赖于航空摄影测量获取的高精度信息。GIS系统(地理信息系统)进一步将这些数据转化为直观的电子地图,...

    浅析ArcGIS在森林资源调查内业数据处理中的运用.pdf

    它能够存储和管理所有的空间和属性数据,使得海量数据的存储和管理成为可能。ArcGIS的数据仓库可以用于企业级信息系统和社会级信息系统中,这不仅提升了操作的便捷性,也促进了数据的一体化,更好地服务于各级林业...

    数据科学周报:数据科学专题报告.rar

    数据科学是现代信息技术领域的一个重要分支,它涵盖了统计学、计算机科学和领域专业知识,旨在从海量数据中提取有价值的信息和洞察。"数据科学周报:数据科学专题报告"这一资源很可能是对最近一周数据科学领域的研究...

    数据科学专题报告(1).rar

    而云计算平台如AWS、Azure和Google Cloud则提供了弹性的计算资源,加速数据处理和模型训练。 综上所述,这份“数据科学专题报告(1).pdf”可能会覆盖以上多个方面,提供对数据科学理论、方法和实践的全面洞察,对于...

Global site tag (gtag.js) - Google Analytics