hbase-2.4 过滤器

1、比较过滤器

行键过滤器 RowFilter
Filter filter1 = new RowFilter(CompareOperator.EQUAL, new BinaryComparator("q4000".getBytes()));
scan.setFilter(filter1);


列族过滤器 FamilyFilter
Filter filter1 = new FamilyFilter(CompareOperator.EQUA, new BinaryComparator(Bytes.toBytes(“info")));
scan.setFilter(filter1);


列过滤器 QualifierFilter
Filter filter = new QualifierFilter(CompareOperator.LESS_OR_EQUAL, new  BinaryComparator(Bytes.toBytes("name")));
scan.setFilter(filter1);


值过滤器 ValueFilter
Filter filter = new ValueFilter(CompareOperator.EQUAL,new BinaryComparator(Bytes.toBytes("love4000")));
scan.setFilter(filter1);


值过滤器 DependentColumnFilter-(ValueFilter的加强版)
Filter dependentColumnFilter = new DependentColumnFilter(
        Bytes.toBytes("info"),
        Bytes.toBytes("name"),
        false,
        CompareOperator.EQUAL,
        new BinaryPrefixComparator(Bytes.toBytes("love4000")));
scan.setFilter(filter1);
2、专用过滤器 

单列列值过滤器 SingleColumnValueFilter
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(
        "info".getBytes(),
        "name".getBytes(),
        CompareOperator.EQUAL,
        new SubstringComparator("love3000"));
singleColumnValueFilter.setFilterIfMissing(true);
scan.setFilter(singleColumnValueFilter);


单列列值排除器 SingleColumnValueExcludeFilter
SingleColumnValueExcludeFilter 继承自上面的 SingleColumnValueFilter,过滤行为与其相反。


行键前缀过滤器 PrefixFilter
Filter filter = new PrefixFilter(Bytes.toBytes("q10"));
scan.setFilter(filter);



列名前缀过滤器 ColumnPrefixFilter
Filter filter = new ColumnPrefixFilter(Bytes.toBytes("name"));
scan.setFilter(filter);


分页过滤器 PageFilter
Filter filter = new PageFilter(10);
scan.setFilter(filter);
scan.withStartRow(Bytes.toBytes("2"));
3、包装过滤器

时间过滤器 TimestampsFilter
List<Long> list = new ArrayList<>();
list.add(1591191281943L);
TimestampsFilter timestampsFilter = new TimestampsFilter(list);
scan.setFilter(timestampsFilter);


SkipFilter过滤器
Filter filter1 = new ValueFilter(CompareOperator.NOT_EQUAL,
        new BinaryComparator(Bytes.toBytes("love4000")));
Filter filter2 = new SkipFilter(filter1);
scan.setFilter(filter2);


FilterList
以上都是讲解单个过滤器的作用,当需要多个过滤器共同作用于一次查询的时候,就需要使用 FilterList。FilterList 支持通过构造器或者 addFilter 方法传入多个过滤器
List<Filter> filters = new ArrayList<Filter>();
 
Filter filter1 = new RowFilter(CompareOperator.GREATER_OR_EQUAL,
                               new BinaryComparator(Bytes.toBytes("XXX")));
filters.add(filter1);


 
Filter filter2 = new RowFilter(CompareOperator.LESS_OR_EQUAL,
                               new BinaryComparator(Bytes.toBytes("YYY")));
filters.add(filter2);


 
Filter filter3 = new QualifierFilter(CompareOperator.EQUAL,
                                     new RegexStringComparator("ZZZ"));
filters.add(filter3);


 
FilterList filterList = new FilterList(filters);
 
Scan scan = new Scan();
scan.setFilter(filterList);


列分页过滤器:ColumnPaginationFilter(int limit,int off)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值