使用HBASE用到的几个filter SingleColumnValueFilter,RowFilter,ValueFilter

SingleColumnValueFilter                                                               

过滤某列值大于多少小于多少:                

               List<Filter> filters = new ArrayList<Filter>();                        
             filters.add(  new SingleColumnValueFilter(Bytes.toBytes("pinfo"),  //列族
                          Bytes.toBytes("t"),  //列名                                 
                          CompareOp.GREATER,Bytes.toBytes("1359901"]) ) //值          
             filters.add(  new SingleColumnValueFilter(Bytes.toBytes("pinfo"),        
                          Bytes.toBytes("t"),                                         
                          CompareOp.LESS,Bytes.toBytes("1389901"]) )                  
                                                                                      
                                                                                      
             FilterList filterList1 = new FilterList(Operator.MUST_PASS_ALL,filters); 
                                                                                      
             sn.setFilter(filterList1);    

                                          

                                                  
RowFilter      
                                                                      
Rowkey中包括某些字符串                                                                

字符串存在list a内      

 

   for (int a=0;a<size;a++)                                                           
         {                                                                         
   //      Filter filter2 = new RowFilter(CompareOp.EQUAL,                         
     // new RegexStringComparator(".*"+maclist.get(a)+"$"));                  
         Filter filter2 = new RowFilter(CompareOp.EQUAL,                         
            new SubstringComparator(maclist.get(a)));                     
                                                                                 
         filters.add(filter2);                                                     
         }                                                                         
         FilterList filterList1 = new FilterList(Operator.MUST_PASS_ONE,filters);  
                                                                                   
         sn.setFilter(filterList1);                                                
                                                        

                                     

                                                                                      
ValueFilter:                                                                          

不需要指定某个列,含指某个值的列的数据都取出来,混在一起   

HTable table = new HTable(config, tableName);                                         
    Scan scan = new Scan();                                                           
                                                                                      
    System.out.println("只列出值包含data1的列");                                      
    Filter filter1 = new ValueFilter(CompareFilter.CompareOp.EQUAL,                   
        new SubstringComparator("data1"));                                            
scan.setFilter(filter1);          

  

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值