介绍
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,写法:
nullRegexStringComparator:匹配正则表达式,写法:正则表达式
SubstringComparator:匹配子字符串,写法:
substring:值