0
我已经添加到FilterLists的层次,让我从HBase的表需要我只能过滤多行筛选器,类似如下:HBase的FilterList.Operator.MUST_PASS_NONE功能
FilterList list = new FilterList(FilterList.Operator.MUST_PASS_ONE);
FilterList uidList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
if(term.length()>longSize){
long highValue = Long.parseLong(term.substring(longSize));
uidList.addFilter(new RowFilter(CompareFilter.CompareOp.GREATER_OR_EQUAL,
new BinaryComparator(Bytes.add(prefix, Bytes.toBytes(addLongPadding(lowValue))))));
uidList.addFilter(new RowFilter(CompareFilter.CompareOp.LESS_OR_EQUAL,
new BinaryComparator(Bytes.add(prefix, Bytes.toBytes(addLongPadding(highValue))))));
} else
uidList.addFilter(new RowFilter(CompareFilter.CompareOp.EQUAL,
new BinaryComparator(Bytes.add(prefix, Bytes.toBytes(addLongPadding(lowValue))))));
list.addFilter(uidList);
这只是举例来说,在list
中添加了针对特定案例的更多过滤器。有没有一种方法可以使用FilterList
运算符,以便我可以否定过滤器?对于这个例子,我需要过滤不在lowValue
和highValue
之间的所有行,对于其他分支的所有行都是NOT_EQUAL
到我的值(lowValue == highValue
)。
我知道运营商是基于NAND
和NOR
所以从技术上来说这可能是可能的,但我不知道如何。
的'setFilterIfMissing'是一个不错的把戏在'SingleColumnValueFilter'使用,有效地否定你写的过滤器,但它受限于这种类型的过滤器,所以它似乎到目前为止,其他类型的过滤器,你只需要写oposite过滤器... –