hbase 跳转过滤器skipfilter
用于跳过整个行键,需要和其他过滤器一起使用,本例SkipFilter和ValueFilter过滤器组合使用过滤不符合条件的行,
如果不配合SkipFiter,ValueFilter只过滤单元值包含的列。
private static void skipFilterData() throws IOException{
Table table = helper.getConnection().getTable(TableName.valueOf("demoTable"));
Filter filter = new ValueFilter(CompareOperator.NOT_EQUAL,new BinaryComparator(Bytes.toBytes("val2")));
Scan scan = new Scan();
scan.setFilter(filter);
ResultScanner scanner1 = table.getScanner(scan);
System.out.println("Results of scan #1:");
int n = 0;
for (Result result : scanner1) {
for (Cell cell : result.rawCells()) {
System.out.println("Cell: " + cell + ", Value: " +
Bytes.toString(cell.getValueArray(), cell.getValueOffset(),
cell.getValueLength()));
n++;
}
}
scanner1.close();
//应用跳转过滤
Filter skipFilter = new SkipFilter(filter);
Scan scan2 = new Scan();
scan2.setFilter(skipFilter);
ResultScanner scanner2 = table.getScanner(scan2);
System.out.println("Total cell count for scan #1: " + n);
n = 0;
System.out.println("Results of scan #2:");
for (Result result : scanner2) {
for (Cell cell : result.rawCells()) {
System.out.println("Cell: " + cell + ", Value: " +
Bytes.toString(cell.getValueArray(), cell.getValueOffset(),
cell.getValueLength()));
n++;
}
}
scanner2.close();
System.out.println("Total cell count for scan #2: " + n);
}
表中数据:
hbase(main):005:0> scan 'demoTable'
ROW COLUMN+CELL
row1 column=cf1:qual1, timestamp=5, value=row1_batch1
row1 column=cf1:qual2, timestamp=2, value=val2
row1 column=cf1:qual3, timestamp=3, value=val3
row1 column=cf2:qual1, timestamp=1, value=val1
row1 column=cf2:qual2, timestamp=5, value=row1_batch2
row1 column=cf2:qual3, timestamp=3, value=val3
row2 column=cf1:qual1, timestamp=1, value=val1
row2 column=cf1:qual3, timestamp=3, value=val3
row2 column=cf2:qual1, timestamp=1, value=val1
row2 column=cf2:qual2, timestamp=2, value=val2
row2 column=cf2:qual3, timestamp=3, value=val3
row3 column=cf1:qual1, timestamp=1, value=value1
输出结果:ValueFilter过滤只过滤某个Cell,配合SkipFilter过滤了整行数据
Cell: row1/cf1:qual1/5/Put/vlen=11/seqid=0, Value: row1_batch1
Cell: row1/cf1:qual3/3/Put/vlen=4/seqid=0, Value: val3
Cell: row1/cf2:qual1/1/Put/vlen=4/seqid=0, Value: val1
Cell: row1/cf2:qual2/5/Put/vlen=11/seqid=0, Value: row1_batch2
Cell: row1/cf2:qual3/3/Put/vlen=4/seqid=0, Value: val3
Cell: row2/cf1:qual1/1/Put/vlen=4/seqid=0, Value: val1
Cell: row2/cf1:qual3/3/Put/vlen=4/seqid=0, Value: val3
Cell: row2/cf2:qual1/1/Put/vlen=4/seqid=0, Value: val1
Cell: row2/cf2:qual3/3/Put/vlen=4/seqid=0, Value: val3
Cell: row3/cf1:qual1/1/Put/vlen=6/seqid=0, Value: value1
Total cell count for scan #1: 10
Results of scan #2:
Cell: row3/cf1:qual1/1/Put/vlen=6/seqid=0, Value: value1
Total cell count for scan #2: 1
hbase 跳转过滤器skipfilter的更多相关文章
- hbase权威指南学习笔记--过滤器
1.使用hbase是shell客户端进行过滤查询 scan 'testtable',{COLUMNS=>'colfam1:col-0',FILTER=>RowFilter.new(Comp ...
- HBase笔记6 过滤器
过滤器 过滤器是GET或者SCAN时过滤结果用的,相当于SQL的where语句 HBase中的过滤器创建后会被序列化,然后分发到各个region server中,region server会还原过滤器 ...
- java SSH整合配置
web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3 ...
- iOS App之间跳转
1.先来看看效果,这里做了三个功能 从MyApp跳转到YourApp 从MyApp跳转到YourApp的指定页面 从YourApp使用跳转url的方式跳回MyApp 2.实现app之间的跳转需要注意两 ...
- phonegap + Framework7 之 ios 推送跳转测试
先说说项目情况:使用phonegap创建的ios项目,然后在使用html + css开发网页中又使用了一个框架Framework7(Framework7是一个构建仿原生ios和android应用的框架 ...
- iOS开发,应用间的跳转
预习:URL由两部分组成-- 1.scheme:协议头(http:// ftp:// 等等) 2.path:路径(URL中path可以没有) 一.简单实现跳转到指定APP(也就是说跳转到的APP必须 ...
- RouterOS首次打开网页强制跳转
网上极少有关于RouterOS的第一次打开网页强制跳转主页的方法,大多数都方法是将浏览某个域名的IP地址跳转到自己的主页,这种方法有时会失效.还有一种方法就是当用户用80端口连接时,抓取源地址到地址列 ...
- IOS 应用跳转 (IOS9白名单)
跳转到指定app的实现 IOS中应用的跳转是通过URL实现的,因此在实现应用跳转之前我们要设置一下对应的URL. 图一(寻找配置软件的URL) 图二(具体配置选项) 注意: 如果IOS版本为IOS9 ...
- iOS - (两个APP之间的跳转)
一个程序若要跳到另一个程序.需要在目标程序的plist文件里面修改: 打开info.plist,添加一项URL types 展开URL types,再展开Item0,将Item0下的URL ident ...
随机推荐
- virtualBox linux centos 挂载u盘 解决乱码
linux 挂载u盘 环境:虚拟机virtualBox5.2.8 linux centos6.5 64bit 第一步:插入u盘 第二步:virtualBox 设置启用u盘 提示:如果不知道哪个是你u盘 ...
- APP性能测试--功耗测试
一.功耗测试基础 移动设备的电池电量是非常有限的,保持持久的续航能力尤为重要.另外,android的很多特性都比较耗电(如屏幕,GPS,sensor传感器,唤醒机制,CPU,连网等的使用),我们必须要 ...
- Unity面试技巧之C#基础
1. 定义常量最好使用运行是常量就是readonly 编译常量就是 const public static readonly MyClass myClass = new MyClass(); publ ...
- 006 --MySQL索引原理
一 .索引的概念? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句的优化 ...
- Netty源码分析第6章(解码器)---->第1节: ByteToMessageDecoder
Netty源码分析第六章: 解码器 概述: 在我们上一个章节遗留过一个问题, 就是如果Server在读取客户端的数据的时候, 如果一次读取不完整, 就触发channelRead事件, 那么Netty是 ...
- Windows下的ROUGE文本测评工具基本安装
需要的安装包: rouge1.5.5:https://pan.baidu.com/s/1B7-LYn1lZKC8f51yXxNK9w Strawberry Perl :http://strawberr ...
- ossec安装
安装 安装要求 对于Unix系统来说,OSSEC只需要GNU的make.gcc和libc.推荐使用OpenSSL,但仅属于一个可选项.而且,通常您只需在一个系统上做编译操作,然后将二进制程序复制到其他 ...
- C++:内存分区
前言:最近正在学习有关static的知识,发觉对C++的内存分区不是很了解,上网查了很多资料,遂将这几天的学习笔记进行了简单整理,发表在这里 • 栈区(stack):主要用来存放函数的参数以及局部变量 ...
- mysql 性能分析及explain用法
转载自http://blog.sina.com.cn/s/blog_4586764e0100o9s1.html 使用explain语句去查看分析结果 如 explain select * from ...
- angularJS1笔记-(2)-$watch方法监听变量的变化
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...