我们有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。但是我仍然非常需要获取所有列,而不仅是我过滤过的列。

10-02 05:12