布隆過濾器(Bloom Filter)

2021-08-23 12:24:06 字數 703 閱讀 9570

1.簡介

布隆過濾器是一種多雜湊函式對映的快速查詢演算法。它可以判斷出某個元素肯定不在集合裡或者可能在集合裡,即它不會漏報,但可能會誤報。通常應用在一些需要快速判斷某個元素是否屬於集合,但不嚴格要求100%正確的場合。

2.原理

首先需要k個hash函式,每個函式可以把key雜湊成為1個整數

初始化時,需要乙個長度為m位元的陣列,每個位元位初始化為0

某個key加入集合時,用k個hash函式計算出k個雜湊值,並把陣列中對應的位元位置為1

判斷某個key是否在集合時,用k個hash函式計算出k個雜湊值,並查詢陣列中對應的位元位,如果所有的位元位都是1,認為在集合中。否則,只要有乙個為0,那麼就肯定不在集合裡

3.優缺點

優點:不需要儲存實際key值,節約空間,能夠確定乙個值肯定不在集合裡;

缺點:對於計算認為在集合裡的,有一定機率不在;不能刪除集合裡的任何乙個;

4.求變數

設 位陣列大小為m,資料集合裡的資料個數為n,錯誤率為p,雜湊函式個數為k

則: m =-(n*lnp) / (ln2)^2

k = ln2 * m / n

5.應用

1.搜尋引擎中的海量網頁去重

2.leveldb等資料庫中快速判斷元素是否存在,可以顯著減少磁碟訪問

spark 布隆過濾器 bloomFilter

資料過濾在很多場景都會應用到,特別是在大資料環境下。在資料量很大的場景實現過濾或者全域性去重,需要儲存的資料量和計算代價是非常龐大的。很多小夥伴第一念頭肯定會想到布隆過濾器,有一定的精度損失,但是儲存效能和計算效能可以達到幾何級別的提公升。很多第三方框架也實現了相應的功能,比如hbase框架實現的布...

布隆過濾器

布隆過濾器 bloom filter 是1970年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。它的優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。如果想要判斷乙個元素是不是在乙個集合裡,一般想到...

布隆過濾器

布隆過濾器的概念 如果想要判斷乙個元素是不是在乙個集合裡,一般想到的是將所有元素儲存起來,然後通過比較確定。鍊錶,樹等等資料結構都是這種思路.但是隨著集合中元素的增加,我們需要的儲存空間越來越大,檢索速度也越來越慢 o n o logn 不過世界上還有一種叫作雜湊表 又叫 雜湊表,hash tabl...