次のように、HBase テーブルから必要なものだけをフィルター処理できる FilterLists の階層に複数の行フィルターを追加しました。
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
この例では、 andの間にないすべての行をフィルタリングする必要がありhighValue
、else ブランチの場合はNOT_EQUAL
my value( lowValue == highValue
) になります。
演算子が基づいていることは知っているNAND
のでNOR
、技術的には可能ですが、方法はわかりません。