海量数据处理--bloom filter

例题:给定两个大文件,各含有50亿条url,要求利用4G内存快速找出共同的url

解答:

假设两个文件为A和B,4G内存有32G位,可以表示5G的url。

本文采用bloom filter解答:

首先简单介绍一下bloom filter的思想,其核心是:位数组;K个hash函数。

通过对大量数据处理,通过k个hash函数将大量数据压缩存储到多个位当中。

查找的时候,根据K个hash函数的结果,如果有0那么就不在集合中,如果没有0那么就在集合中(可能会误判)。

这道题可以先通过对A处理,然后得到bloom filter,再对B处理,判断是否重复url。由于通过位压缩,位数组可以存在内存里,

然后减少文件访问次数,能够加快速度。但是可能会存在误判。

参考下面链接:

http://blog.csdn.net/hguisu/article/details/7866173

海量数据处理--bloom filter

时间: 2024-10-10 07:55:14

海量数据处理--bloom filter的相关文章

【转】海量数据处理算法-Bloom Filter

1. Bloom-Filter算法简介 Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.它是一个判断元素是否存在于集合的快速的概率算法.Bloom Filter有可能会出现错误判断,但不会漏掉判断.也就是Bloom Filter判断元素不再集合,那肯定不在.如果判断元素存在集合中,有一定的概率判断错误.因此,Bloom Filter不适合那些“零错误”的应用场合.而在能容忍低错误率的应用场合下,Bloom Fi

海量数据处理算法之Bloom Filter

算法介绍 Bloom Filter的中文名称叫做布隆过滤器,因为他最早的提出者叫做布隆(Bloom),因而而得此名.布隆过滤器简单的说就是为了检索一个元素是否存在于某个集合当中,以此实现数据的过滤.也许你会想,这还不简单,判断元素是否存在某集合中,遍历集合,一个个去比较不就能得出结果,当然这没有任何的问题,但是当你面对的是海量数据的时候,在空间和时间上的代价是非常恐怖的,显然需要更好的办法来解决这个问题,而Bloom Filter就是一个不错的算法.具体怎么实现,接着往下看. Bloom Fil

海量数据处理算法—Bloom Filter

1. Bloom-Filter算法简介 Bloom-Filter,即布隆过滤器,1970年由Bloom中提出.它可以用于检索一个元素是否在一个集合中. Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合.它是一个判断元素是否存在集合的快速的概率算法.Bloom Filter有可能会出现错误判断,但不会漏掉判断.也就是Bloom Filter判断元素不再集合,那肯定不在.如果判断元素存在集合中,有一定的概率判断错误.

海量数据处理之Bloom Filter详解

前言 :  即可能误判    不会漏判 一.什么是Bloom Filter Bloom Filter是一种空间效率很高的随机数据结构,它的原理是,当一个元素被加入集合时,通过K个Hash函数将这个元素映射成一个位阵列(Bit array)中的K个点,把它们置为1.检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检索元素一定不在:如果都是1,则被检索元素很可能在.这就是布隆过滤器的基本思想. 但Bloom Filter的这种高效是有一定代价的:在判

Bloom Filter 大规模数据处理利器

BloomFilter–大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法.通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合. 一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络爬虫程序(web crawler).由于网络间的链接错综复杂,爬虫在网络间爬行很可能会形成“环”.为了避免形成“环”,就需要知道爬虫程序已经访问过那些URL.给一个URL,怎样知道爬虫程序

海量信息库,查找是否存在(bloom filter布隆过滤器)

Bloom Filter(布隆过滤器) 布隆过滤器用于测试某一元素是否存在于给定的集合中,是一种空间利用率很高的随机数据结构(probabilistic data structure),存在一定的误识别率(false positive),即布隆过滤器报告某一元素存在于某集合中,但是实际上该元素并不在集合中,但是没有错误识别的情形(false negative),即如果某个元素确实没有在该集合中,那么布隆过滤器是不会报告该元素存在于集合中的,没有漏报的情形出现,召回率为百分之百. 算法描述 布隆过

大数据处理算法二:Bloom Filter算法

百度面试题:给定a.b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a.b文件共同的url? Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法.通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合.   一. 实例  为了说明Bloom Filter存在的重要意义,举一个实例: (实例一),假设要你写一个网络蜘蛛(web crawler).由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成

大数据处理方法bloom filter

  布嵘过滤器为一种空间效率很高的随机数据结构, 它的实现方法主要包括一个位数组, 可用c++中的bitset来实现和k个哈希函数. 算法原理为: 当向某一个集合中添加一个元素的时候, 该元素会分别作为K个哈希函数的输入, 将该元素映射到位数组的k个点, 将这些点置为1. 当要查找某个元素是否在该集合中时, 只要将该元素作为k个哈希函数的输入, 然后看映射到的k个点是否为1, 如果全为1, 则该元素(可能)在该集合中, 如果出现了一个为0, 则说明该元素不在该集合中. 这就是该算法的基本思想.

海量数据处理技术学习

海量数据处理的常用技术可分为: 外排序:因为海量数据无法全部装入内存,所以数据的大部分存入磁盘中,小部分在排序需要时存入内存. MapReduce:分布式处理技术 hash技术:以Bloom filter技术为代表 外排序:主要适用于大数据的排序.去重. 分布式处理技术:MapReduce 技术思想是将数据交给不同的机器去处理,将数据切分,之后结果归约. 举例,统计出一批数据的TOP N 首先可以根据数据值或者数据HASH(MD5)后的值将数据按照范围划分,不同的服务器负责处理各种的数值范围,实