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_1具有值的行2LfilterB返回COLUMN_2存在的行。但是他们在一起什么都没有。那么我可以将这些过滤器组合在一起吗?还是我做错了什么?

具有相同条件的第二个问题:我可以使用ColumnPrefixFilter并获取所有列。我的意思是找到COLUMN_2存在的行并获取所有其他列?

4

1 回答 1

1

我发现部分决定。我可以使用QualifierFilter而不是ColumnPrefixFilter. 它有效:

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

我得到一列的行COLUMN_2。但我仍然强烈需要获取所有列,而不仅仅是我过滤的一个。

于 2013-03-07T06:25:45.493 回答