2017-06-02 58 views
0

我對hbase非常陌生。我們需要獲取表格的某些數據。以下是示例數據集。我被困在創建過濾器,這對我來說似乎有點複雜。在查詢中,我將得到value1,我需要將其與ID1 CQ的值進行比較,另一個值說比較值2,我需要將其與ID2 CQ的值進行比較。之後,列jj_中有多個條目,這裏我需要先獲取以jj_開頭的所有列的最新時間,然後將value3與最新的jj_ CQ的值進行比較。在sql中,我可以創建查詢,如選擇* ..其中ID1 =''和ID2 =''和ID3 =''。我如何在Hbase中實現同樣的功能。任何幫助將高度appriciated。在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 

回答

0

可以使用FilterList,例如

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

,因爲我需要它不會工作阿列克謝和條件,而且我需要不需要前綴匹配,我需要精確匹配在此。我想我需要去定製過濾器。 – Bhaskar

+0

這是一個filterList的例子,當然你可以使用Operator.MUST_PASS_ALL來獲得AND條件,關於前綴過濾器,你當然可以使用你自己的過濾器。將更新我的答案 –