hbase2.1.x shell scan 过滤器查询

介绍

scan过滤器,相当于 mysql 的 select ... where 查询

过滤器可以根据 列族、列、版本 等更多的条件来对数据进行过滤

基于 HBase 本身提供的三维有序: rowkey,列,版本(时间戳) 有序

这些过滤器可以 高效 地完成查询过滤的任务

带有过滤器条件的查询请求,会把过滤器分发到各个 RegionServer 进行查询

过滤器也是基于 java 开发的,2.1 api文档:

https://hbase.apache.org/2.1/devapidocs/index.html

中文文档:
http://www.hbase.org.cn/docs/99.html

显示所有过滤器

执行 hbase shell命令:

show_filters

显示如下:

RowFilter:根据 rowkey 查询
PrefixFilter:rowkey前缀比较器


SingleColumnValueFilter:单值过滤器,获取匹配值所属的整个行(具有其他列和值)
SingleColumnValueExcludeFilter:与 SingleColumnValueFilter 相反
ValueFilter:值过滤器,过滤出符合要求的值
ColumnValueFilter:ColumnValueFilter 仅获取匹配的单元格,hbase2中新增


QualifierFilter:列名过滤器,过滤出符合要求的列名
ColumnRangeFilter:过滤列名称的范围
ColumnPrefixFilter:根据前缀对列名过滤
MultipleColumnPrefixFilter:指定多个前缀,对列名过滤,对 ColumnPrefixFilter 的扩展


InclusiveStopFilter:设置停止行
PageFilter:分页过滤器


DependentColumnFilter
KeyOnlyFilter
ColumnCountGetFilter
FirstKeyOnlyFilter
TimestampsFilter:时间戳过滤器
FamilyFilter:列族过滤器,使用方式与 RowFilter 类似
ColumnPaginationFilter:对一行的所有列分页

语法

scan '表名',{FILTER => "过滤器(比较运算符,'比较器表达式')"}

过滤器语法

过滤器是由 java 开发,所以本质就是在调用 过滤器的构造方法,如:RowKey 过滤器

构造方法如下:

RowFilter(CompareOperator op, ByteArrayComparable rowComparator)
  • 第一个形参是:比较运算符
  • 第二个形参是:表达式

比较器运算符

  • =

  • >

  • >=

  • <

  • <=

比较器表达式

  • BinaryComparator:匹配完整字节数组,写法:binary:值

  • BinaryPrefixComparator:匹配字节数组前缀,写法:binaryprefix:值

  • BitComparator:匹配bit位,写法:bit:值

  • NullComparator:匹配null,写法:null

  • RegexStringComparator:匹配正则表达式,写法:正则表达式

  • SubstringComparator:匹配子字符串,写法:substring:值


原文出处:/show_1IX1vaSzwn14.html