2

hbase テーブルがあり、それをスキャンする必要があります。ある特定の列が正確な値を持ち、正確なプレフィックスを持つ他の列が存在するすべての行を見つける必要があります。何かのようなもの:

SingleColumnValueFilter filterA =
                new SingleColumnValueFilter(COLUMN_FAMILY, COLUMN_1, CompareFilter.CompareOp.EQUAL, Bytes.toBytes(2L));
Filter filterB = new ColumnPrefixFilter(COLUMN_2_PREFIX);

FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
filterList.addFilter(filterA);
filterList.addFilter(filterB);
Scan scan = new Scan();
scan.setFilter(filterList);

個々のフィルターは完璧に機能します。値 を持つfilterA行を返します。存在する行を返します。しかし、一緒にすると何も返されません。このフィルターを組み合わせることができますか? または、私は間違っていますか?COLUMN_12LfilterBCOLUMN_2

同じ条件の 2 番目の質問:ColumnPrefixFilterすべての列を使用して取得できますか。COLUMN_2存在する行を見つけて、他のすべての列も取得することを意味しますか?

4

1 に答える 1

1

私は部分的に決定を見つけました。QualifierFilterの代わりに使えますColumnPrefixFilter。そしてそれは動作します:

Filter filterB = new QualifierFilter(CompareFilter.CompareOp.EQUAL, new BinaryPrefixComparator(COLUMN_2_PREFIX));

1 つの列で行を取得しますCOLUMN_2。ただし、フィルター処理した 1 つの列だけでなく、すべての列を取得する必要があります。

于 2013-03-07T06:25:45.493 に答える