每日学习之使用RowFilter过滤器来进行过滤以及Hbase计数器

发布时间 2023-09-13 14:36:38作者: 辞楠

在hbase shell中执行的ruby脚本,其背后还是调用hbase的java API

4.11过滤器

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

比较运算符

=      等于

>      大于

<      小于

>=      大于等于

<=      小于等于

!=      不等于

比较器

BinaryComparator      匹配完整字节数组

BinaryPrefixComparator    匹配字节数组前缀

BitComparator        匹配比特位

NullComparator        匹配空值

RegexStringComparator    匹配正则表达式

SubstringComparator      匹配子字符串

比较器表达式

BinaryComparator        binary:值

BinaryPrefixComparator      binaryPrefix:值

BitComparator          bit:值

NullComparator          null

RegexStringComparator      regexstring:正则表达式

substringComparator        substring:值

4.11.2指定列和指定值进行过滤SingleColumnValueFilter

语法:scan '表名',{Filter=>"比较器名('列簇','列','比较运算符,比较表达式:值')"}

scan 'ORDER_INFO' , {Filter=>"AngleColumnValueFilter(‘C1’,'STATUS',=,'已付款')"}

scan 'ORDER_INFO',{FILTER=>"SingleColumnValueFilter('C1','PAYWAY',=,'binary:1')AND SingleColumnValueFilter('C1','PAY_MONEY',>,'binary:3000')",FORMATTER=>'toString'}

Hbase中比较默认是字符串比较,如果比较数值类型,很可能会出现不准确的情况,例如400>1000

 4.12INCR

Incr是一个原子的累加

使用incr累加器,一定要使用incr初始化列。

可以使用get_counter的指令来获取计数器的操作,使用get是获取不了计数器的操作的。

get_counter语法:get_counter '表名' , 'rowkey' , '列簇:列' 

incr语法:incr '表名' , 'rowkey' , '列簇:列' , 累加值(默认为1)