1  列值过滤器

  SingleColumnValueFilter 对列值进行过滤。

    @Test
public void scanDataByFilter() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Scan scan = new Scan();
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter(Bytes.toBytes("info1"),
Bytes.toBytes("name"), CompareOp.GREATER, Bytes.toBytes("lisi"));
scan.setFilter(singleColumnValueFilter);
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) {
byte[] name = result.getValue(Bytes.toBytes("info1"), Bytes.toBytes("name"));
byte[] sex = result.getValue(Bytes.toBytes("info1"), Bytes.toBytes("sex"));
byte[] age = result.getValue(Bytes.toBytes("info1"), Bytes.toBytes("age"));
byte[] address = result.getValue(Bytes.toBytes("info1"), Bytes.toBytes("address"));
System.out.println("name=" + Bytes.toString(name) + ",sex=" + Bytes.toInt(sex) + ",age=" + Bytes.toInt(age)
+ ",address=" + Bytes.toString(address)); }
}

  扫描全表,用过滤器进行匹配,找出出满足过滤条件的元素。

  SingleColumnValueFilter

  参数:列族、列名、操作符、列值

  操作符可以为:

  CompareOp.LESS:小于

  CompareOp.LESS_OR_EQUAL:小于或者等于

  CompareOp.EQUAL:等于

  CompareOp.NOT_EQUAL:不等于

  CompareOp.GREATER_OR_EQUAL:大于或者等于

  CompareOp.GREATER:大于

  CompareOp.NO_OP:不比较

2 列名前缀过滤器

  ColumnPrefixFilter 对列名进行过滤

@Test
public void scanDataByFilter2() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Scan scan = new Scan();
ColumnPrefixFilter columnPrefixFilter = new ColumnPrefixFilter(Bytes.toBytes("name_"));
scan.setFilter(columnPrefixFilter);
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) { Cell[] rawCells = result.rawCells();
for (Cell cell : rawCells) {
System.out.println("value = " + Bytes.toString(CellUtil.cloneValue(cell)));
System.out.println("family = " + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("qualifier = " + Bytes.toString(CellUtil.cloneQualifier(cell)));
}
}
}

  找出user表中,以'name_'开头的列

3 多个列值前缀过滤器

    @Test
public void testMultipleColumnPrefixFilter() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Scan scan = new Scan();
byte[][] prefixes = new byte[][] { Bytes.toBytes("name"), Bytes.toBytes("age") };
MultipleColumnPrefixFilter multipleColumnPrefixFilter = new MultipleColumnPrefixFilter(prefixes);
scan.setFilter(multipleColumnPrefixFilter);
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) { Cell[] rawCells = result.rawCells();
for (Cell cell : rawCells) {
System.out.println("value = " + Bytes.toString(CellUtil.cloneValue(cell)));
System.out.println("family = " + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("qualifier = " + Bytes.toString(CellUtil.cloneQualifier(cell)));
}
}
}

  用于匹配多列,找出以‘name’和‘age’开头的列

4 rowKey过滤器  

@Test
public void testRowFilter() throws IOException {
Table table = connection.getTable(TableName.valueOf("user"));
Scan scan = new Scan();
RowFilter rowFilter = new RowFilter(CompareOp.EQUAL, new RegexStringComparator("^00004"));
scan.setFilter(rowFilter);
ResultScanner scanner = table.getScanner(scan);
for (Result result : scanner) { Cell[] rawCells = result.rawCells();
for (Cell cell : rawCells) {
System.out.println("value = " + Bytes.toString(CellUtil.cloneValue(cell)));
System.out.println("family = " + Bytes.toString(CellUtil.cloneFamily(cell)));
System.out.println("qualifier = " + Bytes.toString(CellUtil.cloneQualifier(cell)));
}
}
}

  RegexStringComparator("^00004")正则计较器,支持正则表达式。过滤rowkey是以‘’00004‘开头的行。

HBase第三章 过滤器的更多相关文章

  1. HBase in Action前三章笔记

    近期接触HBase,看了HBase In Action的英文版.開始认为还行,做了些笔记.可是兴许看下去,越来越感觉到实战这本书比較偏使用上的细节,对于HBase的具体设计涉及得很少.把前三章的一些笔 ...

  2. Hbase学习(三)过滤器 java API

    Hbase学习(三)过滤器 HBase 的基本 API,包括增.删.改.查等. 增.删都是相对简单的操作,与传统的 RDBMS 相比,这里的查询操作略显苍白,只能根据特性的行键进行查询(Get)或者根 ...

  3. 《Django By Example》第三章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:第三章滚烫出炉,大家请不要吐槽文中 ...

  4. 精通Web Analytics 2.0 (5) 第三章:点击流分析的奇妙世界:指标

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第三章:点击流分析的奇妙世界:指标 新的Web Analytics 2.0心态:搞定它.新的闪亮系列工具:是的.准备好了吗?当然 ...

  5. Mysql技术内幕-笔记-第三章 查询处理

    第三章 查询处理 逻辑查询处理:(8) SELECT (9) DISTINCT <select_list> (1) FROM <left_table> (3) <join ...

  6. 第三章Hibernate关联映射

    第三章Hibernate关联映射 一.关联关系 类与类之间最普通的关系就是关联关系,而且关联是有方向的. 以部门和员工为列,一个部门下有多个员工,而一个员工只能属于一个部门,从员工到部门就是多对一关联 ...

  7. CentOS 7.4 初次手记:第三章 CentOS基础了解

    第三章 CentOS基础了解... 36 第一节 语言编码.终端... 36 I 查看语言编码... 36 II Tty?.pts/?. 36 第二节 bash/sh command. 38 I 查找 ...

  8. [转]TEC1401.Report开发技术总结 - 第三章 使用Oracle Reports开发报表-创建一个分组报表(2/4)

    本文转自:http://blog.csdn.net/deepsea_allen/article/details/53900284 第三章   创建一个分组报表 1.     建立数据模型 数据模型用于 ...

  9. CentOS6安装各种大数据软件 第三章:Linux基础软件的安装

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

随机推荐

  1. 【vue】饿了么项目-header组件开发

    1.数据传递的理解 在App.vue中用到了header组件,首先注册组件 components: { 'v-header': header } 然后才能引用 <v-header :seller ...

  2. 5、Android-跨程序共享数据--内容提供器

    Android数据持久化技术:文件存储.SharedPreferences存储.数据库存储 使用这些持久化技术保存的数据只能再当前的应用程序中访问 但是对于不同应用之间的可以实现跨程序数据共享的功能 ...

  3. [转载] Python协程从零开始到放弃

    Python协程从零开始到放弃 Web安全 作者:美丽联合安全MLSRC   2017-10-09  3,973   Author: lightless@Meili-inc Date: 2017100 ...

  4. spring中的default-lazy-init参数和lazy-init

    在spring的配置中的根节点上有个  default-lazy-init="true"配置:   1.spring的default-lazy-init参数  此参数表示延时加载, ...

  5. Unicode字符集和UTF-8, UTF-16, UTF-32编码

    ASCII 在过去的计算中,ASCII码被用来表示字符.英语只有26个字母和其他一些特殊字符和符号. 下表提供了ASCII字符及其相应的十进制和十六进制值. 可以从上面的表中推断,在十进制数系统中,A ...

  6. Tomcat中日志组件

    Tomcat日志组件 AccessLog接口 public interface AccessLog { public void log(Request request, Response respon ...

  7. Python入门语法

    Python入门语法 动态变量 a=3  整数 a='abc'   a="abc"    字符串 a=3.0       小数 a=true  a=false   布尔型 a=3  ...

  8. 【星云测试】开发者测试(2)-采用精准测试工具对J2EE Guns开发框架进行测试

    配置测试Guns Guns简介 Guns是一个近几年来基于SpringBoot的开源便利且较新的JavaEE项目开发框架,它整合了springmvc + shiro + mybatis-plus + ...

  9. sqlplus连接半天才连上

    问题现象: 某oracle数据库服务器发现使用ssh,crt连接半天1-2分钟后才返回输入密码的提示,应用人员发现使用 sys_GUID()函数获取唯一值的时候,第一次调用需要等待很长时间,但是同一s ...

  10. kvo本质探寻

    一.概述 1.本文章内容,须参照本人的另一篇博客文章“class和object_getClass方法区别”加以理解: 2.基本使用: //给实例对象instance添加观察者,监听该实例对象的某个属性 ...