本篇內(nèi)容主要講解“hbase的bloomfilter怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“hbase的bloomfilter怎么使用”吧!
創(chuàng)新互聯(lián)專注于天山企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站開發(fā)。天山網(wǎng)站建設(shè)公司,為天山等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
簡(jiǎn)介
在判斷元素是否存在的情形確實(shí)很高效。在hbase中的應(yīng)用也是如此,可以使用bloomfilter在采用get方式獲取數(shù)據(jù)的時(shí)候,過濾掉某些storefile文件,進(jìn)而提升性能,當(dāng)然會(huì)存在構(gòu)建bloomfilter導(dǎo)致的性能開銷。
從HBase 0.96開始,默認(rèn)情況下啟用基于行的布隆過濾器??梢赃x擇禁用它們或更改某些表以使用行+列布隆過濾器,具體取決于數(shù)據(jù)的特征以及如何將其加載到HBase中。
可以選擇為行,或行+列組合來啟用Bloom過濾器。如果通常掃描整行,則行+列組合使用bloomfilter是無效的。也即是基于行的布隆過濾器可以對(duì)行+列進(jìn)行Get操作。當(dāng)每個(gè)數(shù)據(jù)條目的大小至少為幾千字節(jié)時(shí),Bloom過濾器效果最佳。
當(dāng)數(shù)據(jù)存儲(chǔ)在幾個(gè)較大的StoreFiles中時(shí),讀取開銷將降低,以避免在低級(jí)掃描期間額外的磁盤IO找到特定的行。
布隆過濾器需要在刪除時(shí)重建,因此可能不適合具有大量刪除的環(huán)境。
常用場(chǎng)景
1、根據(jù)key隨機(jī)讀時(shí),在StoreFile級(jí)別進(jìn)行過濾
2、讀數(shù)據(jù)時(shí),會(huì)查詢到大量不存在的key,也可用于高效判斷key是否存在
案例說明
a) ROW
根據(jù)KeyValue中的row來過濾storefile
舉例:假設(shè)有2個(gè)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)
如果設(shè)置了CF屬性中的bloomfilter為ROW,那么get(r1)時(shí)就會(huì)過濾sf2,get(r3)就會(huì)過濾sf1
b) ROWCOL
根據(jù)KeyValue中的row+qualifier來過濾storefile
舉例:假設(shè)有2個(gè)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)
如果設(shè)置了CF屬性中的bloomfilter為ROW,無論get(r1,q1)還是get(r1,q2),都會(huì)讀取sf1+sf2;而如果設(shè)置了CF屬性中的bloomfilter為ROWCOL,那么get(r1,q1)就會(huì)過濾sf2,get(r1,q2)就會(huì)過濾sf1
啟用Bloom過濾器
在列族上啟用Bloom過濾器。您可以使用HColumnDescriptor的setBloomFilterType方法或使用HBase API來完成此操作。有效值是NONE,ROW(默認(rèn)值),或ROWCOL。
以下示例創(chuàng)建一個(gè)表,并在colfam1列族上啟用ROWCOL Bloom過濾器。
hbase> create 'test',{NAME => 'cf1', BLOOMFILTER => 'ROWCOL'}
相關(guān)配置
到此,相信大家對(duì)“hbase的bloomfilter怎么使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!