我们有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
值为2L
的行。 filterB
返回存在COLUMN_2
的行。但是他们在一起什么也没有返回。那么我可以将这些过滤器组合在一起吗?还是我做错了?
条件相同的第二个问题:我可以使用
ColumnPrefixFilter
并获取所有列。我的意思是找到存在COLUMN_2
的行并获取所有其他列? 最佳答案
我找到了部分决定。我可以使用QualifierFilter
代替ColumnPrefixFilter
。它的工作原理是:
Filter filterB = new QualifierFilter(CompareFilter.CompareOp.EQUAL, new BinaryPrefixComparator(COLUMN_2_PREFIX));
我得到的行只有一列
COLUMN_2
。但是我仍然非常需要获取所有列,而不仅是我过滤过的列。