hbase常见命令
https://blog.csdn.net/qq_41712271/article/details/108464191
备注:COLUMN 和 COLUMNS 是不同的,scan 操作中的 COLUMNS 指定的是表的列族, get操作中的 COLUMN 指定的是特定的列,COLUMNS 的值实质上为“列族:列修饰符”。COLUMN 和 COLUMNS 必须为大写。
get相关的操作
1 查看 scores 表中的 Jim 行的相关数据。
get 'scores','Jim'
2 获取rowKey=Jim并且 1552819392398 <= 时间戳范围 < 1552819398244
get 'scores', 'Jim', {TIMERANGE => [1552819392398, 1552819398244]}
3 查看 scores 表中 Jim 行、course 列族的所以数据
get 'scores','Jim','course'
或
get 'scores','Jim',{COLUMNS=>'course'}
4 查看 scores 表中 Jim 行、course 列族中 math 列的值。
get 'scores','Jim','course:math'
或
get 'scores','Jim',{COLUMN=>'course:math'}
5 获取多个列的值,使用数组表示
get 'scores', 'Jim', {COLUMN => ['grade', 'course', 'address:shen']}
6 获取grade列4个版本的值,默认是按照时间戳降续排序的
get 'scores', 'Jim', {COLUMN => 'grade', VERSIONS => 4}
7 通过时间戳获取某列相应版本的数据
get 'scores','Jim',{COLUMN=>'course:Chinese',TIMESTAMP=>1599450828729}
8 获取rowKey=Jim中的值等于85的所有列
get 'scores', 'Jim', {FILTER => "ValueFilter(=, 'binary:85')"}
scan相关的操作
1 扫描所有数据
scan 'scores'
2 扫描所有数据,只显示某列
scan 'scores',{COLUMN => 'course:Chinese'}
3 扫描所有数据,只显示某列,并指定时间戳
scan 'scores', {COLUMNS => 'grade', TIMESTAMP=> 1599461998485}
4 扫描所有数据,并用TIMERANGE限制,表示的是”>=开始时间 and <结束时间“
scan 'scores',{TIMERANGE=>[1599461946117, 1599464538536]}
5 扫描所有数据,显示多列的值
scan 'scores', {COLUMNS => [ 'grade','course:Chinese', 'course:math']}
6 LIMIT 返回的行数
scan 'scores', { LIMIT => 2}
7 STARTROW,ROWKEY起始行。会先根据这个key定位到region,再向后扫描
scan 'scores', { STARTROW => 'Jim'}
8 STOPROW :截止到STOPROW行,STOPROW行之前的数据,不包括STOPROW这行数据
scan 'scores', { STOPROW => 'Tom'}
9 scan 命令可以指定 startrow,stoprow 来 scan 多个 row,并限制rowkey数量
scan 'scores',{COLUMNS =>'course',LIMIT =>10, STARTROW => 'Jim', STOPROW=>'Tom'}
FILTER条件过滤器
ValueFilter 值过滤器, binary 等于某个值 ,substring:包含某个值
scan 'scores', FILTER=>"ValueFilter(=,'binary:85')"
scan 'scores', FILTER=>"ValueFilter(=,'substring:0')"
ColumnPrefixFilter 列名前缀过滤器,注意:是列名,不是列族
scan 'scores', FILTER=>"ColumnPrefixFilter('eng')"
通过括号、AND和OR的条件组合多个过滤器
scan 'scores', FILTER=>"ColumnPrefixFilter('eng') OR ValueFilter(=,'substring:5')"