溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

HBase內置過濾器java api的知識點總結

發(fā)布時間:2021-09-03 18:36:42 來源:億速云 閱讀:212 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要介紹“HBase內置過濾器java api的知識點總結”,在日常操作中,相信很多人在HBase內置過濾器java api的知識點總結問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”HBase內置過濾器java api的知識點總結”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

1、RowFilter:篩選出匹配的所有的行(使用過)

//rowkey 等于 test|id9
Filter filter=new RowFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("test|id9")));

2、PrefixFilter:篩選出具有特定前綴的行健的數(shù)據(jù)

//rowkey 以test開頭
Filter filter=new PrefixFilter(Bytes.toBytes("test"));

3、KeyOnlyFilter:只返回每行的行健

//只返回每行的行鍵,但值全是空
Filter filter=new KeyOnlyFilter();

4、RandomRowFilter:按照一定的幾率來返回隨機的結果集

//返回隨機的數(shù)據(jù)
Filter filter=new RandomRowFilter(0.5f);

5、InclusiveStopFilter:掃描的時候,我們可以設置一個開始行鍵和一個終止行鍵,默認情況下,這個行鍵的返回是前閉后開區(qū)間,即包含起始行,但不包含終止行,如果我們想要同時包含起始行和終止行

//遇到rowkey等于test|id4停止查詢
Filter filter=new InclusiveStopFilter(Bytes.toBytes("test|id4"));

6、FirsterKeyOnlyFilter:返回的結果集中只包含第一列的數(shù)據(jù)它在找到每行的第一列之后會停止掃描

//篩選出第一個每個第一個單元格
Filter filter=new FirstKeyOnlyFilter();

7、ColumnsPrefixFilter:按照列名的前綴來篩選單元格,如果我們想要對返回的列的前綴加以限制的話,可以使用這個過濾器

//列名以ss開頭
Filter filter=new ColumnPrefixFilter(Bytes.toBytes("ss"));

8、ValueFilter:按照具體的值來篩選單元格

//值中包含one的記錄
Filter filter=new ValueFilter(CompareOperator.EQUAL,new SubstringComparator("one"));

9、ColumnsCountGetFilter:這個過濾器來返回每行最多返回多少列,并在遇到一行的列數(shù)超過我們所設置的限制值的時候,結束掃描操作

Filter ccf=new ColumnCountGetFilter(2);//OK如果突然發(fā)現(xiàn)一行中的列數(shù)超過設定的最大值時,整個掃描操作會停止

10、SingleColumnValueFilter:用一列的值決定這一行的數(shù)據(jù)是否被過濾

SingleColumnValueFilter scvf=new SingleColumnValueFilter(
Bytes.toBytes("colfam1"),
Bytes.toBytes("qual2"),CompareFilter.CompareOp.NOT_EQUAL,new SubstringComparator("BOGUS"));
scvf.setFilterIfMissing(false);
scvf.setLatestVersionOnly(true);//OK

11、SingColumnValueExcludeFilter:這個與10種的過濾器唯一的區(qū)別就是,作為篩選條件的列的不會包含在返回的結果中。

12、SkipFilter:這是一種附加過濾器,其與ValueFilter結合使用,如果發(fā)現(xiàn)一行中的某一列不符合條件,那么整行就會被過濾掉

Filter skf=new SkipFilter(vf);//OK發(fā)現(xiàn)某一行中的一列需要過濾時,整個行就會被過濾掉

13、WhileMatchFilter:如果你想要在遇到某種條件數(shù)據(jù)之前的數(shù)據(jù)時,就可以使用這個過濾器;當遇到不符合設定條件的數(shù)據(jù)的時候,整個掃描也就結束了

Filter wmf=new WhileMatchFilter(rf);//OK類似于Pythonitertools中的takewhile

14、FilterList:用于綜合使用多個過濾器(使用過)

List<Filter>filters=new ArrayList<Filter>();filters.add(rf);
filters.add(vf);FilterList fl=?new FilterList(FilterList.Operator.MUST_PASS_ALL,filters);//OK綜合使用多個過濾器,AND和OR兩種關系

通過Filter獲取結果集案例

FilterList filterList=new FilterList();
Filter filter=new RowFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("test|id9")));
filterList.addFilter(filter);

ResultScanner www = HBaseUtil.getScanner("www",filterList);

for (Result re:www){
     for(Cell kv:re.rawCells()){
                  System.out.println("====="+kv.toString());
                  System.out.println("列族:"+Bytes.toString(kv.getFamilyArray(),kv.getFamilyOffset(),kv.getFamilyLength()));
                  System.out.println("RowKey:"+Bytes.toString(kv.getRowArray(),kv.getRowOffset(),kv.getRowLength()));
                  System.out.println("列名:"+Bytes.toString(kv.getQualifierArray(),kv.getQualifierOffset(),kv.getQualifierLength()));
                  System.out.println("值:"+Bytes.toString(kv.getValueArray(),kv.getValueOffset(),kv.getValueLength()));
                  System.out.println("=================================================================================");

     }
}

到此,關于“HBase內置過濾器java api的知識點總結”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI