布隆過濾器(Bloom Filter)以及相關衍生

2021-10-17 08:50:37 字數 775 閱讀 2474

布隆過濾器(bloom filter)是2023年由布隆提出的。它實際上是乙個很長的二進位制向量和一系列隨機對映函式。布隆過濾器可以用於檢索乙個元素是否在乙個集合中。

不需要儲存key,節省空間

標準bloom filter對於需要精確檢測結果的場景將不再適用,而帶計數器的bloom filter的出現解決了這個問題。counting bloom filter實際只是在標準bloom filter的每乙個位上都額外對應得增加了乙個計數器,在插入元素時給對應的 k (k 為雜湊函式個數)個 counter 的值分別加 1,刪除元素時給對應的 k 個 counter 的值分別減 1。

可以刪除

無法合併,占用空間大

商過濾器是一種空間效率很高的概率資料結構。他是基於乙個hash表,有三個fingerprint 比較重要,

is_occupied :1:

is_continuation: 1:被占用,不是第乙個餘數

is_shifted: 1:插槽中的餘數不在其規範插槽中

插入例項

在狀態1的時候插入三個元素,他們的餘數分別為1,4,7,此時都是空的我們可以直接將其占用;在狀態2的時候,c餘數為1,但是1已經有了,所以c被放到2中,延續和移動要置1;插入d是2,也就是他的規範槽是2,但是被佔了,所以要將2的置is_occupied 置1;d所在的位置是移位以後的。

在狀態三的時候,是假設了ar

spark 布隆過濾器 bloomFilter

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

布隆過濾器

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

布隆過濾器

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