Java 如何使用SingleColumnValueFilter按ColumnPrefixFilter扫描并获取所有列?

Java 如何使用SingleColumnValueFilter按ColumnPrefixFilter扫描并获取所有列?,java,hbase,database-scan,Java,Hbase,Database Scan,我们有hbase表,我需要扫描一下。我必须找到所有行,其中一个特定列具有精确的值,另一个列具有精确的前缀。 比如: SingleColumnValueFilter filterA = new SingleColumnValueFilter(COLUMN_FAMILY, COLUMN_1, CompareFilter.CompareOp.EQUAL, Bytes.toBytes(2L)); Filter filterB = new ColumnPrefixFilte

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


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

我找到了部分决策。我可以使用
限定符过滤器
而不是
列前缀过滤器
。它的工作原理是:

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

我得到的行只有一列
列2
。但是我仍然非常需要得到所有列,而不是我筛选的唯一列。

这可能是一个愚蠢的问题,但是您是否验证了您确实有同时满足这两个条件的行?(除非您需要OR操作,然后您应该将运算符更改为“必须通过”)当然可以。有两个条件都满足的行。我怀疑
columnProfixFilter
不想与过滤器中的其他列一起工作。因为,如果更改
filterA
以将值过滤到
列_2
列中,则代码工作正常。