Java HBase:如何通过限定符和;价值

Java HBase:如何通过限定符和;价值,java,hadoop,nosql,hbase,Java,Hadoop,Nosql,Hbase,我们需要扫描HBase表,在限定符匹配特定模式的列上搜索具有特定值的行 我们正在设置这样一个过滤器: new FilterList(MUST_PASS_ALL, new FamilyFilter(EQUAL, new BinaryComparator(bytes(someFamily))), new QualifierFilter(EQUAL, new RegexStringComparator(qualifierRegex)), new ValueFilter(EQUA

我们需要扫描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)))
当在扫描中执行时,它完全匹配我们要查找的列和值,但扫描程序返回的结果仅包含匹配的列/值,我们需要包含所有列的完整行

我们尝试了很多与SkipFilter的组合(factory HBase提供的唯一一个过滤器,它似乎会影响基于另一个过滤器的整行),但找不到正确答案


当然,我们可以为我们的案例定制一个自定义筛选器,但我们正试图避免将“将jar部署到所有区域服务器并重新启动hbase群集”这类指令推送到生产运营团队。

尝试使用
SingleColumnValueFilter


我不确定您建议我们如何使用SingleColumnValueFilter来实现此目的。你能详细说明你的答案吗?这方面运气好吗?这看起来很明显,但在HBase中似乎不可能:复合筛选器(必须有这个或必须有那个)同时仍然返回复合筛选器本身中未提及的列,就像:从表中选择*,其中(a<10和b=10)或c='a'HBase将只返回列a,在本例中,b和c,而不管您是否使用scan.addFamily(d)包含了其他列