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...