Hbase过滤器

218 阅读1分钟

1.查看所有过滤器

show filters

2. 常见过滤器

过滤器用法

scan '表名', {Filter=>"过滤器(比较运算符, '比较器表达式')"}
分类过滤器解释
行键过滤器RowFilter实现行键的过滤和比较
前缀过滤器PrefixFilter实现主键前缀过滤
列过滤器FamilyFilter列簇过滤器
QualifierFilter列标识过滤器,只显示对应列名的数据
ColumnPrefixFilter列名称前缀过滤
MultipleColumnPrefixFilter指定多个前缀对列名称过滤
ColumnRangeFilter过滤列名称范围
值过滤器ValueFilter过滤符合值条件的键值对
SingleColumnValueFilter在指定列簇和列中进行比较的值过滤器
SingleColumnValueExclud排除匹配成功的值

3. 比较运算符

比较运算符描述
=等于
大于
>=大于等于
<小于
<=小于等于
!=不等于

4. 比较器

比较器描述
BinaryComparator匹配完整字节数组
BinaryPrefixComparator匹配字节数组前缀
BitComparator匹配比特位
NullComparator匹配空值
RegexStringComparator匹配正则表达式
SubstringComparator匹配子字符串

5. 比较器表达式

基本语法:比较器类型:比较器的值

比较器表达式语言缩写
BinaryComparatorbinary:值
BinaryPrefixComparatorbinaryprefix:值
BitComparatorbit:值
NullComparatornull
RegexStringComparatorregexstring:正则表达式
SubstringComparatorsubstring:值

6. 实战

6.1 使用RowFilter查询订单ID的数据(主键:订单ID)

需求:查询订单ID为:02602f66-adc7-40d4-8485、订单状态以及支付方式 QQ截图20220516095809.png

op:比较运算符

rowComparator:比较器

scan 'order_info', {FILTER=>"RowFilter(=,'binary:02602f66-adc7-40d4-8485')"}

6.2 使用SingleColumnValueFilter查询状态为已付款的订单

QQ截图20220516101716.png family:列簇

qualifier:列限定符(列名)

op:比较运算符

comparator:比较器

  1. 需求:查询订单状态为已付款的订单(单个列)
scan 'order_info', {FILTER=>"SingleColumnValueFilter('info', 'STATUS', =, 'binary:已付款')", FORMATTER=>'toString'}
  1. 需求:查询支付方式为1,且金额大于3000的订单(多个列)

使用AND或者OR组合多个过滤器

scan 'order_info', {FILTER=>"SingleColumnFilter('C1', 'PAYWAY', =, 'binary:1') AND SingleColumnFilter('C1', 'PAY_MONEy', >, 'binary:3000')", FORMATTER=>'toString'}