我们想用两个 QualifierFilters 过滤 HBase 表上的扫描。意味着我们只想获取表中确实具有某个列“col_A”和(!)某个其他列“col_B”的行。
我们当前的方法如下所示:
FilterList filterList = new FilterList(FilterList.Operator.MUST_PASS_ALL);
Filter filter1 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_A".getBytes()));
filterList.addFilter(filter1);
Filter filter2 = new QualifierFilter(CompareOp.EQUAL, new BinaryComparator("col_B".getBytes()));
filterList.addFilter(filter2);
Scan scan = new Scan();
scan.setFilter(filterList);
...
尽管 HBase 表中有几行确实具有“col_A”和“col_B”列,但 ResultScanner 不会返回此扫描的任何结果。
如果我们只将 filter1 应用于扫描,一切正常,我们会得到所有具有“col_A”的行。如果我们只将 filter2 应用于扫描,它是相同的。我们确实得到了所有具有“col_B”的行。
只有当我们结合这两个过滤器时,我们才会得到任何结果。
什么是仅从表中获取具有 col_A 和 col_B 的行的正确方法?