您好,登錄后才能下訂單哦!
這篇文章主要介紹“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:篩選出具有特定前綴的行健的數據
//rowkey 以test開頭 Filter filter=new PrefixFilter(Bytes.toBytes("test"));
3、KeyOnlyFilter:只返回每行的行健
//只返回每行的行鍵,但值全是空 Filter filter=new KeyOnlyFilter();
4、RandomRowFilter:按照一定的幾率來返回隨機的結果集
//返回隨機的數據 Filter filter=new RandomRowFilter(0.5f);
5、InclusiveStopFilter:掃描的時候,我們可以設置一個開始行鍵和一個終止行鍵,默認情況下,這個行鍵的返回是前閉后開區間,即包含起始行,但不包含終止行,如果我們想要同時包含起始行和終止行
//遇到rowkey等于test|id4停止查詢 Filter filter=new InclusiveStopFilter(Bytes.toBytes("test|id4"));
6、FirsterKeyOnlyFilter:返回的結果集中只包含第一列的數據它在找到每行的第一列之后會停止掃描
//篩選出第一個每個第一個單元格 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:這個過濾器來返回每行最多返回多少列,并在遇到一行的列數超過我們所設置的限制值的時候,結束掃描操作
Filter ccf=new ColumnCountGetFilter(2);//OK如果突然發現一行中的列數超過設定的最大值時,整個掃描操作會停止
10、SingleColumnValueFilter:用一列的值決定這一行的數據是否被過濾
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種的過濾器唯一的區別就是,作為篩選條件的列的不會包含在返回的結果中。
12、SkipFilter:這是一種附加過濾器,其與ValueFilter結合使用,如果發現一行中的某一列不符合條件,那么整行就會被過濾掉
Filter skf=new SkipFilter(vf);//OK發現某一行中的一列需要過濾時,整個行就會被過濾掉
13、WhileMatchFilter:如果你想要在遇到某種條件數據之前的數據時,就可以使用這個過濾器;當遇到不符合設定條件的數據的時候,整個掃描也就結束了
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的知識點總結”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。