用于跳过整个行键,需要和其他过滤器一起使用,本例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的更多相关文章

  1. hbase权威指南学习笔记--过滤器

    1.使用hbase是shell客户端进行过滤查询 scan 'testtable',{COLUMNS=>'colfam1:col-0',FILTER=>RowFilter.new(Comp ...

  2. HBase笔记6 过滤器

    过滤器 过滤器是GET或者SCAN时过滤结果用的,相当于SQL的where语句 HBase中的过滤器创建后会被序列化,然后分发到各个region server中,region server会还原过滤器 ...

  3. java SSH整合配置

    web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3 ...

  4. iOS App之间跳转

    1.先来看看效果,这里做了三个功能 从MyApp跳转到YourApp 从MyApp跳转到YourApp的指定页面 从YourApp使用跳转url的方式跳回MyApp 2.实现app之间的跳转需要注意两 ...

  5. phonegap + Framework7 之 ios 推送跳转测试

    先说说项目情况:使用phonegap创建的ios项目,然后在使用html + css开发网页中又使用了一个框架Framework7(Framework7是一个构建仿原生ios和android应用的框架 ...

  6. iOS开发,应用间的跳转

    预习:URL由两部分组成-- 1.scheme:协议头(http://  ftp:// 等等) 2.path:路径(URL中path可以没有) 一.简单实现跳转到指定APP(也就是说跳转到的APP必须 ...

  7. RouterOS首次打开网页强制跳转

    网上极少有关于RouterOS的第一次打开网页强制跳转主页的方法,大多数都方法是将浏览某个域名的IP地址跳转到自己的主页,这种方法有时会失效.还有一种方法就是当用户用80端口连接时,抓取源地址到地址列 ...

  8. IOS 应用跳转 (IOS9白名单)

    跳转到指定app的实现 IOS中应用的跳转是通过URL实现的,因此在实现应用跳转之前我们要设置一下对应的URL. 图一(寻找配置软件的URL) 图二(具体配置选项) 注意: 如果IOS版本为IOS9 ...

  9. iOS - (两个APP之间的跳转)

    一个程序若要跳到另一个程序.需要在目标程序的plist文件里面修改: 打开info.plist,添加一项URL types 展开URL types,再展开Item0,将Item0下的URL ident ...

随机推荐

  1. 论文阅读 | Formalizing Visualization Design Knowledge as Constraints: Actionable and Extensible Models in Draco

    1. Introduction 程序员编写的可视化图表与专家眼中的设计标准总存在差距.我们无法每次都向可视化专家咨询设计上的意见,所以我们需求将设计标准,研究成果应用于自动化设计工具的正式框架,这些工 ...

  2. Controller层@PathVariable使用

    @PathVariable 映射 URL 绑定的占位符 带占位符的 URL 是 Spring3.0 新增的功能,该功能在SpringMVC 向 REST 目标挺进发展过程中具有里程碑的意义通过 @Pa ...

  3. Docker--删除容器实例和镜像

    一.删除容器实例 使用命令docker rm 容器ID或者容器名 1.docker ps -a查询已有的实例 [root@cxt data]# docker ps -a 2.docker rm 容器I ...

  4. 基于C#的机器学习--贝叶斯定理-执行数据分析解决肇事逃逸之谜

    贝叶斯定理-执行数据分析解决肇事逃逸之谜 ​ 在这一章中,我们将: 应用著名的贝叶斯定理来解决计算机科学中的一个非常著名的问题. 向您展示如何使用贝叶斯定理和朴素贝叶斯来绘制数据,从真值表中发现异常值 ...

  5. linux下自己安装软件做成命令

    安装nodejs,从官网下下来的是一个压缩包,解压下里面有可执行文件.教程上用ln -s [可执行文件的绝对路径] [/usr/local/bin/]建了一个软连接,这样就能直接无视路径,用命令行调用 ...

  6. zookeeper客户端相关命令

    windows环境:    本机 直接 点机zkcli.cmd linux环境: 连接到zookeeper server ./zkCli.sh -server localhost:2181 help命 ...

  7. Notes of Daily Scrum Meeting(11.3)

    Notes of Daily Scrum Meeting(11.3) 2014年11月3日  星期一  20:00—20:30 团队成员 今日团队任务 当日工作分配额 完成情况 陈少杰 阅读理解代码中 ...

  8. Bing词典vs有道词典比对测试报告——体验篇之成长性及用户控制权

    成长性: 会记住曾经查询过的单词或例句与有道词典实现基本一样,并无特别亮点. 用户有控制权: 必应词典和有道词典都能实现基本的查询前进和后退.以及无法查找结果,能顺利进行反馈. 我们在输入完单词按下回 ...

  9. Scrum Meeting 3 -2014.11.5

    这几天小伙伴们都在努力,研究出不少改进方案并加以设计和实施了,分词算法的优化进度可观,而其他的任务在改进的过程中产生了些问题,对于之前代码的设计感到疑惑,我们找到了上届的学长们咨询,他们也给出了不少建 ...

  10. java实验五实验报告

    一.实验内容 Cmp传输与加解密 结对编程,一人服务器,一人客户端,服务器向客户端发送经RSA加密的密钥和用密钥加密的密文(使用DES算法),客户端负责接收加密后的密钥和密文,并解密得出明文. 二.实 ...