2017-02-22 9 views
0

У меня есть ключ строки, состоящий из двадцати символов, как это:HBase FuzzyRowFilter не работает

XXAAAAXXXXXXXXXXXXXXX

Я хочу, чтобы сканировать с помощью FuzzyRowFilter на величину АА на 2 до 6 позиции , Но AA не является фиксированным значением.

ответ

1

Если вы не имеете AAAA как фиксированные, вы можете сделать так:

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE); 
String[] matches=new String[]{"AAAA","BBBB"}; 
    for (String match:matches) { 
     byte[] rk = Bytes.toBytesBinary("??" + match + "??????????????"); 
     byte[] fuzzyVal = new byte[]{1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; 
     List<Pair<byte[], byte[]>> pairs = new ArrayList<>(); 
     pairs.add(new Pair<>(rk, fuzzyVal)); 
     filterList.addFilter(new FuzzyRowFilter(pairs)); 
    } 
Scan scan=new Scan(); 
    scan.setFilter(filterList); 

Это фильтр на основе всех fuzzyFilters в списке и матч на основе FilterList.Operator.MUST_PASS_ONE. Исходя из ваших требований, внесите изменения и соответствующим образом измените их.

0

Извините, но с использованием,

FilterList filterList = new FilterList(/*FilterList.Operator.MUST_PASS_ONE*/); 
    String[] matches=new String[]{"1609","1610"}; 
     for (String match:matches) { 
      byte[] rk = Bytes.toBytesBinary("??" + match + "??????????????"); 
      byte[] fuzzyVal = new byte[]{1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}; 
      List<Pair<byte[], byte[]>> pairs = new ArrayList<>(); 
      pairs.add(new Pair<>(rk, fuzzyVal)); 
      filterList.addFilter(new FuzzyRowFilter(pairs)); 
     } 
    Scan scan_fuzzy=new Scan(); 
    scan_fuzzy.setFilter(filterList); 

    ResultScanner rs_fuzzy = table.getScanner(scan); 

    for(Result result : rs_fuzzy) { 
     System.out.println(result); 
     System.out.println("Value: " + Bytes.toString(result.getValue(FAMILY,COLUMN))); 
    } 

мой результат не содержит только строку, соответствующую RowKey: 02160901222720647002

, но все подряд (и RowKey) моего стола

Смежные вопросы