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:用于综合使用多个过滤器(使用过)Listfilters=new ArrayList();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("=================================================================================");
}
}