接着上一篇HBase Filter – Dedicated Filters继续进行HBase Filter的学习和了解。Decorating Filters,装饰性过滤器,其自身不产生任何作用,需要结合其它过滤器来产生效果。
数据准备和代码准备同HBase Filter – Comparision Filters。
Decorating Filters(装饰性过滤器)
SkipFilter
SkipFilter,跳转过滤器,目前只能作用于ValueFilter。ValueFilter用于输出满足条件的行和对应的列(该行中也有1至N列满足),当加上SkipFilter后,若某行中有不满足ValueFilter的列存在,则整行都不会输出(即,只要某行中有一列不满足ValueFilter,则其它满足的列也不会输出)。
代码示例
1 2 3 4 5 6 7 |
@Test public void testValueFilter() throws IOException { Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("100")); Filter f = new SkipFilter(filter); setFilterAndPrint(f); } |
输出结果为空,因为没有哪一行的所有列的值全部以100开头。
WhileMatchFilter
WhileMatchFilter,全匹配过滤器,使用过滤器时,当遇到不满足过滤条件的数据时将不会返回该数据,当加上WhileMatchFilter后,遇到第一个不符合条件的数据时将会停止继续的扫描。
1 2 3 4 5 6 7 |
@Test public void testValueFilter() throws IOException { Filter filter = new ValueFilter(CompareFilter.CompareOp.EQUAL, new SubstringComparator("100")); Filter f = new WhileMatchFilter(filter); setFilterAndPrint(f); } |
结果
Key: 101/cf1:col1/1405913524513/Put/vlen=5/ts=0, Value: 10086
可以看到在扫描到第一行的cf1:col2时,由于值为qwe1,不满足条件,所以终止了扫描。
HBase比较器
比较器 | 含义 |
---|---|
BinaryComparator | 按字节索引顺序比较指定字节数组 |
BinaryPrefixComparator | 按字节索引顺序比较指定字节数组前缀(左端数据) |
NullComparator | 判断给定的是否为空 |
BitComparator | 按位比较 |
RegexStringComparator | 正则表达式比较,仅支持EQUAL和NOT_EQUAL |
SubstringComparator | 字串比较 |
HBase比较符
比较符 | 含义 |
---|---|
LESS | < |
LESS_OR_EQUAL | <= |
EQUAL | = |
NOT_EQUAL | <> |
GREATER_OR_EQUAL | >= |
GREATER | > |
NO_OP | 无操作 |
(转载本站文章请注明作者和出处 程序员的自我修养 – SelfUp.cn ,请勿用于任何商业用途)
分类:Apache HBase
标签:HBase