海量数据处理

1、引言

海量数据处理工作为:基于海量数据上的存储、处理和操作。

时间: 采用巧妙的算法,搭配合适的数据结构,如Bloom filter(布隆过滤器)、hash、bitmap、堆、trie树。
空间: 大而化之,分而治之(hash映射)。

2、算法/数据结构基础

2.1 boolm filter(布隆过滤器)

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

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

Bloom Filter有以下几个特点:

  • 不存在漏报(False Negative),即某个元素在某个集合中,肯定能报出来。
  • 可能存在误报(False Positive),即某个元素不在某个集合中,可能也被爆出来。
  • 确定某个元素是否在某个集合中的代价和总的元素数目无关。

Bloom Filter优点:

  • 相比于其它的数据结构,Bloom Filter在空间和时间方面都有巨大的优势。
  • Bloom Filter存储空间和插入/查询时间都是常数。
  • 另外, Hash函数相互之

你可能感兴趣的:(大数据)