我们需要扫描一个 HBase 表,在限定符匹配特定模式的列上搜索具有特定值的行。
我们正在设置这样的过滤器:
new FilterList(MUST_PASS_ALL,
new FamilyFilter(EQUAL, new BinaryComparator(bytes(someFamily))),
new QualifierFilter(EQUAL, new RegexStringComparator(qualifierRegex)),
new ValueFilter(EQUAL, new SubstringComparator(detailValue)))
当在 Scan 中执行时,它与我们想要的列和值完全匹配,但 Scanner 返回的结果仅包含匹配的列/值,而我们需要包含所有列的整行。
我们已经尝试了很多与 SkipFilter 的组合(工厂 HBase 中唯一可用的过滤器,它似乎会影响基于另一个过滤器的整行)但找不到正确的答案。
当然,我们可以为我们的案例制作自定义过滤器,但我们正在努力避免向生产运营团队推送“将 jar 部署到所有区域服务器并重启 hbase 集群”之类的说明。
最佳答案
尝试使用 SingleColumnValueFilter
:
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
关于java - HBase:如何通过限定符和值使用过滤器扫描时获得完整的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21636787/