2017-01-26 13 views
1

У меня есть HBase сканирование с ColumnPrefixFilter и кратным FuzzyFilter s следующим образом:Как смешивать MUST_PASS_ALL и MUST_PASS_ONE в фильтрах HBase?

FilterList filterList = new FilterList(); 
filterList.addFilter(new FuzzyFilter(...)); 
filterList.addFilter(new FuzzyFilter(...)); 
filterList.addFilter(new ColumnPrefixFilter(...)); 
Scan s = new Scan(); 
s.setFilter(filterList); 

Есть ли способ, что я могу использовать MUST_PASS_ONE на FuzzyFilter с, а затем MUST_PASS_ALL на ColumnPrefixFilter в сочетании с множеством FuzzyFilter с ?

Так что я искал что-то вроде этого:

ColumnPrefixFilter И (ИЛИ FuzzyFilterFuzzyFilter)

ответ

1

Мы можем реализовать два различных FilterList достигнуть этого. См приведенный ниже код

FilterList mainFilter = new FilterList(FilterList.Operator.MUST_PASS_ALL); 
    FilterList subFilter = new FilterList(FilterList.Operator.MUST_PASS_ONE); 

    subFilter.addFilter(new FuzzyRowFilter(null)); 
    subFilter.addFilter(new FuzzyRowFilter(null)); 

    mainFilter.addFilter(new ColumnPrefixFilter(Bytes.toBytes("d"))); 
    mainFilter.addFilter(subFilter); 

Вы можете определить mainFilter с оператором MUST_PASS_ALL и подфильтр с MUST_PASS_ONE. Теперь добавьте условия фильтра в субфильтр, а затем добавьте этот субфильтр в mainFilter.

1

FilterList является Filter сама, так что просто объединить их

FilterList fuzzy = new FilterList(MUST_PASS_ONE, fuzzy1, fuzzy2); 
FilterList main = new FilterList(MUST_PASS_ALL, prefixFilter, fuzzy); 
s.setFilter(main); 

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

  • Нет связанных вопросов^_^