您好,登錄后才能下訂單哦!
本篇內容主要講解“hbase的bloomfilter怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“hbase的bloomfilter怎么使用”吧!
簡介
在判斷元素是否存在的情形確實很高效。在hbase中的應用也是如此,可以使用bloomfilter在采用get方式獲取數據的時候,過濾掉某些storefile文件,進而提升性能,當然會存在構建bloomfilter導致的性能開銷。
從HBase 0.96開始,默認情況下啟用基于行的布隆過濾器。可以選擇禁用它們或更改某些表以使用行+列布隆過濾器,具體取決于數據的特征以及如何將其加載到HBase中。
可以選擇為行,或行+列組合來啟用Bloom過濾器。如果通常掃描整行,則行+列組合使用bloomfilter是無效的。也即是基于行的布隆過濾器可以對行+列進行Get操作。當每個數據條目的大小至少為幾千字節時,Bloom過濾器效果最佳。
當數據存儲在幾個較大的StoreFiles中時,讀取開銷將降低,以避免在低級掃描期間額外的磁盤IO找到特定的行。
布隆過濾器需要在刪除時重建,因此可能不適合具有大量刪除的環境。
常用場景
1、根據key隨機讀時,在StoreFile級別進行過濾
2、讀數據時,會查詢到大量不存在的key,也可用于高效判斷key是否存在
案例說明
a) ROW
根據KeyValue中的row來過濾storefile
舉例:假設有2個storefile文件sf1和sf2,
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)
sf2包含kv3(r3 cf:q1 v)、kv4(r4 cf:q1 v)
如果設置了CF屬性中的bloomfilter為ROW,那么get(r1)時就會過濾sf2,get(r3)就會過濾sf1
b) ROWCOL
根據KeyValue中的row+qualifier來過濾storefile
舉例:假設有2個storefile文件sf1和sf2,
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)
sf2包含kv3(r1 cf:q2 v)、kv4(r2 cf:q2 v)
如果設置了CF屬性中的bloomfilter為ROW,無論get(r1,q1)還是get(r1,q2),都會讀取sf1+sf2;而如果設置了CF屬性中的bloomfilter為ROWCOL,那么get(r1,q1)就會過濾sf2,get(r1,q2)就會過濾sf1
啟用Bloom過濾器
在列族上啟用Bloom過濾器。您可以使用HColumnDescriptor的setBloomFilterType方法或使用HBase API來完成此操作。有效值是NONE,ROW(默認值),或ROWCOL。
以下示例創建一個表,并在colfam1列族上啟用ROWCOL Bloom過濾器。
hbase> create 'test',{NAME => 'cf1', BLOOMFILTER => 'ROWCOL'}
相關配置
到此,相信大家對“hbase的bloomfilter怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。