HBase(四)JavaAPI操作 和 过滤器查询

HBase的JavaAPI操作

  • HBase是一个分布式的NoSql数据库,在实际工作当中,我们一般都可以通过JavaAPI来进行各种数据的操作,包括创建表,以及数据的增删改查等等

创建maven工程

  • 讲如下内容作为maven工程中pom.xml的repositories的内容
  • 自动导包

创建myuser表

  • 创建myuser表,此表有两个列族f1和f2

向表中添加数据

查询数据

  • 初始化一批数据到HBase表当中,用于查询

Get查询

  • 按照rowkey进行查询,获取所有列的所有值
  • 查询主键rowkey为0003的人

Scan查询

HBase过滤器查询

过滤器

  • 过滤器的作用是在服务端判断数据是否满足条件,然后只将满足条件的数据返回给客户端

  • 过滤器的类型很多,但是可以分为两大类

    • ==比较过滤器==
    • ==专用过滤器==

比较过滤器使用

  • HBase过滤器的比较运算符

  • HBase比较过滤器的比较器(指定比较机制):

  • 比较过滤器

1、rowKey过滤器RowFilter

  • 通过RowFilter过滤比rowKey 0003小的所有值出来

2、列族过滤器FamilyFilter

  • 查询列族名包含f2的所有列族下面的数据

3、列过滤器QualifierFilter

  • 只查询列名包含name的列的值

4、列值过滤器ValueFilter

  • 查询所有列当中包含8的数据

专用过滤器使用

1、单列值过滤器 SingleColumnValueFilter

  • SingleColumnValueFilter会返回满足条件的cell。所在行的所有cell的值

  • 查询f1 列族 name 列 值为刘备的数据

2、列值排除过滤器SingleColumnValueExcludeFilter

  • 与SingleColumnValueFilter相反
    • 如果指定列的值符合filter条件,则会排除掉row中指定的列,其他的列全部返回
    • 如果列不存在或不符合filter条件,则不返回row中的列

3、rowkey前缀过滤器PrefixFilter

  • 查询以00开头的所有前缀的rowkey

4、分页过滤器PageFilter

  • 通过pageFilter实现分页过滤器

说明:

  • pageSize = 2设置每页展示2条数据
  • pageNum = 3设置查询第3页数据
  • 计算查询首条记录的索引(pageNum - 1) * pageSize + 1

file

5、多过滤器综合查询FilterList

  • 需求:使用SingleColumnValueFilter查询f1列族,name为刘备的数据,并且同时满足rowkey的前缀以00开头的数据(PrefixFilter

说明:

  • SingleColumnValueFilter单列过滤器, 比较列值是否等于刘备
  • prefixFilter前缀过滤器用于匹配rowKey是否以00开头

Views: 11