【问题标题】:Add Multiple column key and value filters in hbase在 hbase 中添加多列键和值过滤器
【发布时间】:2017-06-02 10:55:29
【问题描述】:

我对 hbase 很陌生。我们需要获取表的某些数据。下面是示例数据集。我一直在创建过滤器,这对我来说似乎有点复杂。在查询中,我将得到 value1,我需要将其与 ID1 CQ 的值进行比较,另一个值让我说 value2,我需要将其与 ID2 CQ 的值进行比较。之后有多个jj_列的条目,这里我需要先获取所有以jj_开头的列的最新时间,然后将value3与最新的jj_CQ的值进行比较。在 sql 中,我可以创建查询,例如 select * .. where ID1='' and ID2='' and ID3=''。我如何在 Hbase 中实现相同的目标。任何帮助都将受到高度评价。

ROW                                  COLUMN+CELL                                                                                              
 1                                   column=d:ID1, timestamp=1496273604085, value=5678                                                      
 1                                   column=d:ID2, timestamp=1496273604085, value=Jan                                                      
 1                                   column=d:data, timestamp=1496273604085, value=TestData1                               
 1                                   column=d:jj_01/01/2017 01:37:56 AM, timestamp=1496273604085, value=11345601/01/2017 01:37:56 AM          
 2                                   column=d:ID1, timestamp=1496273604105, value=5678                                                      
 2                                   column=d:ID2, timestamp=1496273604105, value=Jan                                                      
 2                                   column=d:data, timestamp=1496273604105, value=TestData2                              
 2                                   column=d:jj_01/02/2017 10:37:56 AM, timestamp=1496273604105, value=11345601/02/2017 10:37:56 AM          
 2                                   column=d:jj_01/02/2017 11:37:56 PM, timestamp=1496273604105, value=11345601/02/2017 11:37:56 PM          
 3                                   column=d:ID1, timestamp=1496273604112, value=5678                                                      
 3                                   column=d:ID2, timestamp=1496273604112, value=Jan,Feb                                                  
 3                                   column=d:data, timestamp=1496273604112, value=TestData3                            
 3                                   column=d:jj_02/01/2017 11:37:56 AM, timestamp=1496273604112, value=11345602/01/2017 11:37:56 AM          
 4                                   column=d:ID1, timestamp=1496273604124, value=5678,1234                                                 
 4                                   column=d:ID2, timestamp=1496273604124, value=Jan,Dec                                                  
 4                                   column=d:data, timestamp=1496273604124, value=TestData4                                    
 4                                   column=d:jj_02/02/2017 09:37:56 PM, timestamp=1496273604124, value=11345602/02/2017 09:37:56 PM          
 4                                   column=d:jj_02/02/2017 11:37:56 AM, timestamp=1496273604124, value=11345602/02/2017 11:37:56 AM          
 5                                   column=d:ID1, timestamp=1496273604133, value=5678,1234                                                 
 5                                   column=d:ID2, timestamp=1496273604133, value=Jan                                                      
 5                                   column=d:data, timestamp=1496273604133, value=TestData5                         
 5                                   column=d:jj_01/05/2017 11:37:56 AM, timestamp=1496273604133, value=11345601/05/2017 11:37:56 AM          
 5                                   column=d:jj_01/06/2017 09:37:56 PM, timestamp=1496273604133, value=11345601/06/2017 09:37:56 PM          
 6                                   column=d:ID1, timestamp=1496273604138, value=5678                                                      
 6                                   column=d:ID2, timestamp=1496273604138, value=Dec                                                      
 6                                   column=d:data, timestamp=1496273604138, value=TestData6                          
 6                                   column=d:jj_02/02/2017 09:37:56 AM, timestamp=1496273604138, value=11345602/02/2017 09:37:56 AM          
 7                                   column=d:ID1, timestamp=1496273604148, value=5678                                                      
 7                                   column=d:ID2, timestamp=1496273604148, value=Jan                                                      
 7                                   column=d:data, timestamp=1496273604148, value=TestData7                                
 7                                   column=d:jj_02/03/2017 09:37:56 AM, timestamp=1496273604148, value=11345602/03/2017 09:37:56 AM 

【问题讨论】:

    标签: hbase


    【解决方案1】:

    你可以使用FilterList,例如

    scan.setFilter(
      new FilterList(
        FilterList.Operator.MUST_PASS_ALL, 
        new myCustomFilterA(), 
        new myCustomFilterB(),
        ...
      )
    );
    

    【讨论】:

    • 它不起作用 Alexi,因为我需要和条件,而且我不需要前缀匹配我需要完全匹配。我想我需要使用自定义过滤器。
    • 这是一个filterList的例子,当然你可以使用Operator.MUST_PASS_ALL来进行AND条件,关于前缀过滤器,你当然可以使用自己的过滤器。将更新我的答案
    猜你喜欢
    • 2016-12-26
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多