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. 【LeetCode每天一题】Remove Duplicates from Sorted Array II(移除有序数组中重复的两次以上的数字)

    Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twic ...

  2. Inno Setup添加中文安装语言文件

    如果你不添加中文安装语言文件,你编译生成的安装包的语言是不会有中文. 一,打开软件安装目录下的Languages文件夹下,有如下好多文件,可是就是没有Chianese.isl. 好了,你只需要随便拷贝 ...

  3. math.random用法

    Math.random():获取0~1随机数 Math.floor() method rounds a number DOWNWARDS to the nearest integer, and ret ...

  4. git地址

    登录地址:https://git.oschina.net/signup API地址:http://git.oschina.net/progit/

  5. Hibernate工作原理及为什么要用?. Struts工作机制?为什么要使用Struts? spring工作机制及为什么要用?

    三大框架是用来开发web应用程序中使用的.Struts:基于MVC的充当了其中的试图层和控制器Hibernate:做持久化的,对JDBC轻量级的封装,使得我们能过面向对象的操作数据库Spring: 采 ...

  6. SpringMVC中controller的几种返回值

    String :跳转到对应的返回值中. return “/index”: ModelAndView: 控制页面跳转方式: 1. ModelAndView modelAndView = new Mode ...

  7. 【HTML5-基础-SVG实践】

    关于svg HTML页面常用加载svg图片方式: HTML元素 // data 和 type 至少指定一项 <object data = './public/icon.svg' width='2 ...

  8. [iOS]CIFilter滤镜

    - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typica ...

  9. 转:Sql Server中清空所有数据表中的记录

    如果要删除数据表中所有数据只要遍历一下数据库再删除就可以了,清除所有数据我们可以使用搜索出所有表名,构造为一条SQL语句进行清除了,这里我一一给各位同学介绍.   使用sql删除数据库中所有表是不难的 ...

  10. Html5 Canvas 实现图片合成

    多个图片合成一张 <!doctype html> <html> <head> <meta charset="utf-8"> < ...