HBase:使用限定符和值的过滤器扫描时如何获得完整的行?
Posted
技术标签:
【中文标题】HBase:使用限定符和值的过滤器扫描时如何获得完整的行?【英文标题】:HBase: How to get complete rows when scanning with filters by qualifier & value? 【发布时间】:2014-02-07 20:05:11 【问题描述】:我们需要扫描 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 集群”之类的指令。
【问题讨论】:
运气好吗?这似乎很明显,但在 HBase 中似乎不可能:一个复合过滤器(必须有这个 OR 必须有那个)同时仍然返回复合过滤器本身未提及的列很像:select * from table where (a 【参考方案1】:改用SingleColumnValueFilter
:
https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
【讨论】:
我不确定您如何建议我们为此目的使用 SingleColumnValueFilter。请详细说明你的答案?以上是关于HBase:使用限定符和值的过滤器扫描时如何获得完整的行?的主要内容,如果未能解决你的问题,请参考以下文章