您可以使用SingleColumnValueFilter来解决这个问题。使用您的示例,您可以这样做:
SingleColumnValueFilter filter = new SingleColumnValueFilter(Bytes.toBytes("cf"), Bytes.toBytes("c3"), CompareFilter.CompareOp.EQUAL, Bytes.toBytes("v3"));
然后,您可以通过以下方式将过滤器添加到扫描中:
Scan scan = new Scan();
scan.setFilter(filter);
此外,如果您想拥有多个过滤器,您也可以这样做。只需确保将它们添加到 FilterList 并将其传递给您的扫描(使用 setFilter 方法)。
SingleColumnValueFilter f1 = new SingleColumnValueFilter(Bytes.toBytes("cf"), Bytes.toBytes("c3"), CompareFilter.CompareOp.EQUAL, Bytes.toBytes("v3"));
SingleColumnValueFilter f2 = new SingleColumnValueFilter(Bytes.toBytes("cf"), Bytes.toBytes("c2"), CompareFilter.CompareOp.EQUAL, Bytes.toBytes("v2"));
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ONE); //could be FilterList.Operator.MUST_PASS_ALL instead
filterList.addFilter(f1);
filterList.addFilter(f2);
Scan scan = new Scan();
scan.setFilter(filterList);