hbase 常用过滤器相关知识(SingleColumnValueFiter、正则过滤器等)及踩坑

整理一下最近工作实际开发用到的各种情况吧,持续更新。因为公司内网,纯手打,兄弟们采纳的时候报错见谅,欢迎评论指出。

1. SingleColumnValueFiter  作用:用一列的值决定这一行的数据是否被过滤

//添加过滤器

//用于综合使用多个过滤器  其实严格来说也是一种过滤器

FilterList filterList = new FilterList();

SingleolumnValueFilter transCodeFilter = new SingleColumnValueFilter(Bytes.toBytes("C"),  //列族
                          Bytes.toBytes("transcode"),  //列名                                 
                          CompareOp.EQUAL,Bytes.toBytes("transcode1") ); //值

//对于咱们要使用作为条件的列,如果这一列本身就不存在,那么如果为true,这样的行将会被过滤掉,如果为false,这样的行会包含在结果集中

transCodeFilter.setFilterIfMissing(true);

filterList .addFilter(transCodeFilter);

scan.setFilter(filterList)

踩坑结果总不是所期望的,如果要正确使用还得必须在scan中添加上面的列 => scan.addColumn('CF','C');

确实这玩意不百度会弄得人很难受,若不想添加列,可用该过滤器:SingleColumnValueExcludeFilter

 

2. 正则过滤器 说是正则,其实就是RowFilter的延伸,即    RegexStringComparator

相关的过滤方法使用:
提取rowkey以01结尾数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new RegexStringComparator(".*01$"));

提取rowkey以包含201407的数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new SubstringComparator("201407"));


提取rowkey以123开头的数据
Filter filter = new RowFilter(CompareFilter.CompareOp.EQUAL,new BinaryPrefixComparator("123".getBytes()));

以上是网上搜的,再记录一下我实际开发的正则以供参考

=>   String regexString = "(F-AAM|F-BAM|F-EBANKC\(FOVA\)|F-FCF)"

                                             +"\\d#"

                                             +"0#201910151614#"

                                             +"\\d{2}#"

                                             +".*";

//解释:我的rowkey=>'F-AAM#两位任意数字#0#日期#uuid',自己对应上面来理解咯

RegexStringComparator compartor = new RegexStringComparator(regextring);

RowFilter rowFilter = new RowFilter(CompareFilter.Compare.Op.EQUAL,cmparator);

scan.setFilter(rowFilter);

 

其他过滤器没在实际开发用过就不厚着脸皮写了,留个大佬链接,有需要的可以去看看。

https://blog.csdn.net/cnweike/article/details/42920547

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值