Hbase API高级特性-附加过滤器

原创 2013年12月02日 22:18:59

1.   跳转过滤器(SkipFilter)

该过滤器包含了一个用户提供 过滤器,当被包装的过滤器遇到一个需要过滤的KeyValue实例时,用户可以过滤整行数据。当过滤器发现某一行中的一列需要过滤时,那么整行数据都将被过滤掉。例如:SkipFilter与ValueFilter组合起来获取不包含空列值得行。

public void skipFilter() throws IOException{
Filter filter1 = new ValueFilter(CompareFilter.CompareOp.NOT_EQUAL,
new BinaryComparator(Bytes.toBytes("hunan")));

Scan scan = new Scan();
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
for(Result res : scanner1){
for(KeyValue kv: res.raw())
System.out.println("KV1: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner1.close();

Filter filter2 = new SkipFilter(filter1);
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
for(Result res : scanner2){
for(KeyValue kv: res.raw())
System.out.println("KV2: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner2.close();
}

2.   全匹配过滤器(WhileMatchFilter)

当遇到一条数据被过滤时,它就会放弃后面的扫描。使用封装的过滤器来检查KeyValue,并确认是否一行数据因行键或是列被跳过而过滤。

public void WhileMatchFilter() throws IOException{
Filter filter1 = new RowFilter(CompareFilter.CompareOp.NOT_EQUAL,
new BinaryComparator(Bytes.toBytes("3103")));

Scan scan = new Scan();
scan.setFilter(filter1);
ResultScanner scanner1 = table.getScanner(scan);
for(Result res : scanner1){
for(KeyValue kv: res.raw())
System.out.println("KV1: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner1.close();

Filter filter2 = new WhileMatchFilter(filter1);
scan.setFilter(filter2);
ResultScanner scanner2 = table.getScanner(scan);
for(Result res : scanner2){
for(KeyValue kv: res.raw())
System.out.println("KV2: "+kv+",value: "+Bytes.toString(kv.getValue()));
}
scanner2.close();
}

相关文章推荐

HBase内置过滤器的一些总结

HBase为筛选数据提供了一组过滤器,通过这个过滤器可以在HBase中的数据的多个维度(行,列,数据版本)上进行对数据的筛选操作,也就是说过滤器最终能够筛选的数据能够细化到具体的一个存储单元格上(由行...
  • cnweike
  • cnweike
  • 2015年01月20日 17:03
  • 28034

hbase filter作用列表

网上以及hbase相关书籍中有许多关

Hbase API高级特性-专用过滤器

1.   Hbase提供的专用过滤器直接继承自FilterBase,其中一些过滤器只能做行筛选,因此只适合于扫描操作,对get(),这些过滤器限制的更苛刻:要么包含整行,要么什么都不包括。 2.  ...

Hbase API高级特性-比较过滤器

1.   过滤器在客户端创建,通过RPC传送到服务器端,然后再服务器端执行过滤操作。 2.   行过滤器(RowFilter) public void rowFilterScan() throws I...

Hbase API高级特性-计数器

1.  许多收集统计信息的应用有点击流或在线广告意见,这些应用需要收集到日志文件用作后续的分析,用户可以使用计数器做实时统计,从而放弃延时较高的批量处理操作。 2.  原子操作检查并修改:将当前列当...

HBase读书笔记之API高级特性-4

HBase读书笔记之API高级特性-4
  • caixen
  • caixen
  • 2016年01月09日 12:13
  • 144

HBase总结(8)--附加过滤器、FilterList

一、介绍 本节介绍HBase提供的最后两种过滤器,并且也介绍多个过滤器配合使用的方法。 二、详解 1、附加过滤器 (1)跳转过滤器:SkipFilter(Filter filter) 该过滤...

Hibernate3高级特性-使用过滤器

转  http://www.cnblogs.com/yql1986/archive/2011/10/14/2210568.html   Hibernate3 新增了对某个类或集合使用预定...

HBase概念学习(四)Java API之扫描和过滤器

HBase基本的CRUD操作就不多介绍了,无非就是Put,Get,Delete三个类的运用。 现在看一下扫描技术,这种技术类似于关系型数据库的游标(cursor),并利用到了HBase底层顺序存储的特...

Hbase葱岭探秘--过滤器Api

Hbase中提供了许多的过滤器接口,以此来对数据进行过滤,使得查询出想要的数据。行过滤器针对行信息进行过滤,参数中可以采用前缀匹配、按位与、或、异或以及子串匹配等匹配的方式。同时可以控制EQUAL、N...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hbase API高级特性-附加过滤器
举报原因:
原因补充:

(最多只允许输入30个字)