在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)