hbase java api count_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:按照一定的幾率來返回隨機(jī)的結(jié)果集//返回隨機(jī)的數(shù)據(jù)
Filter filter=new RandomRowFilter(0.5f);
5、InclusiveStopFilter:掃描的時(shí)候,我們可以設(shè)置一個(gè)開始行鍵和一個(gè)終止行鍵,默認(rèn)情況下,這個(gè)行鍵的返回是前閉后開區(qū)間,即包含起始行,但不包含終止行,如果我們想要同時(shí)包含起始行和終止行//遇到rowkey等于test|id4停止查詢
Filter filter=new InclusiveStopFilter(Bytes.toBytes("test|id4"));
6、FirsterKeyOnlyFilter:返回的結(jié)果集中只包含第一列的數(shù)據(jù)它在找到每行的第一列之后會(huì)停止掃描//篩選出第一個(gè)每個(gè)第一個(gè)單元格
Filter filter=new FirstKeyOnlyFilter();
7、ColumnsPrefixFilter:按照列名的前綴來篩選單元格,如果我們想要對(duì)返回的列的前綴加以限制的話,可以使用這個(gè)過濾器//列名以ss開頭
Filter filter=new ColumnPrefixFilter(Bytes.toBytes("ss"));
8、ValueFilter:按照具體的值來篩選單元格//值中包含one的記錄
Filter filter=new ValueFilter(CompareOperator.EQUAL,new SubstringComparator("one"));
9、ColumnsCountGetFilter:這個(gè)過濾器來返回每行最多返回多少列,并在遇到一行的列數(shù)超過我們所設(shè)置的限制值的時(shí)候,結(jié)束掃描操作Filter ccf=new ColumnCountGetFilter(2);//OK如果突然發(fā)現(xiàn)一行中的列數(shù)超過設(shè)定的最大值時(shí),整個(gè)掃描操作會(huì)停止
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:這個(gè)與10種的過濾器唯一的區(qū)別就是,作為篩選條件的列的不會(huì)包含在返回的結(jié)果中。
12、SkipFilter:這是一種附加過濾器,其與ValueFilter結(jié)合使用,如果發(fā)現(xiàn)一行中的某一列不符合條件,那么整行就會(huì)被過濾掉Filter skf=new SkipFilter(vf);//OK發(fā)現(xiàn)某一行中的一列需要過濾時(shí),整個(gè)行就會(huì)被過濾掉
13、WhileMatchFilter:如果你想要在遇到某種條件數(shù)據(jù)之前的數(shù)據(jù)時(shí),就可以使用這個(gè)過濾器;當(dāng)遇到不符合設(shè)定條件的數(shù)據(jù)的時(shí)候,整個(gè)掃描也就結(jié)束了Filter wmf=new WhileMatchFilter(rf);//OK類似于Pythonitertools中的takewhile
14、FilterList:用于綜合使用多個(gè)過濾器(使用過)Listfilters=new ArrayList();filters.add(rf);
filters.add(vf);FilterList fl=?new FilterList(FilterList.Operator.MUST_PASS_ALL,filters);//OK綜合使用多個(gè)過濾器,AND和OR兩種關(guān)系
通過Filter獲取結(jié)果集案例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("=================================================================================");
}
}
總結(jié)
以上是生活随笔為你收集整理的hbase java api count_HBase内置过滤器java api的总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么用计算机算亩数,怎样用手机测量亩数?
- 下一篇: html 价格列表组件,评价列表rati