Hbase常用shell命令
2019-11-10 本文已影响0人
HideOnStream
前置工作:搭建好Hbase集群并启动,然后通过hbase shell
命令进入Hbase的shell环境。
Hbase shell命令基本操作
- help
帮助命令,查看hbase包含的命令,以及基本的用法。
help
- list
查看表操作。查看当前数据库中有哪些表。
list
- create
创建表操作。创建表的语法有2种。
create '表名', '列族1', '列族2', ...
# 或者
create '表名', {NANE => '列族1', VERSION => '版本数'}, {NAME => '列族2'}, ...
- disable && drop
删除表操作。删除表之前,必须先让该表为disable状态,使用命令:
disable '表名'
然后,使用drop命令删除这个表:
drop '表名'
- put
插入数据操作。向表中插入数据,使用put命令。
语法格式为:
put '表名', 'rowkey', '列族名:列名', '值'
- get
查询数据操作。
- 获取指定rowkey的所有信息
语法格式为:
get '表名', 'rowkey'
- 获取指定rowkey下某些列族的信息
语法格式为:
get '表名', 'rowkey', '列族名1', '列族名2', ...
# 或者:
get '表名', 'rowkey', {COLUMN => ['列族1', '列族2', ...]}
- 获取指定rowkey下的某些列族的某些列的信息
语法格式为:
get '表名', 'rowkey', '列族1:列1', '列族2:列2', ...
# 或者
get '表名', 'rowkey', {COLUMN => ['列族1:列1', '列族2:列2', ...]}
# 或者将上边2种语法结合起来
get '表名', 'rowkey', '列族1:列1', '列族2', ...
# 或者
get '表名', 'rowkey', {COLUMN => ['列族1:列1', '列族2']}
- scan
查询数据操作。get与scan的区别在于,get只能获取一行数据的全部或者部分信息;scan可以获取一行或者多行的全部或者部分信息。
- 查询所有行
scan '表名'
- 查询一个或者多个列族的信息
scan '表名', {COLUMM => ['列族名1', '列族名2', ...]}
# 指定版本个数
scan '表名', {COLUMM => ['列族名1', '列族名2', ...], VERSION => 版本个数}
- 查询一个或者多个列族下的列的信息
scan '表名', {COLUMN => ['列族1:列1', '列族2', ...]}
# 指定版本个数
scan '表名', {COLUMN => ['列族1:列1', '列族2', ...], VERSION => 版本个数}
- 根据rowkey进行范围查询
scan '表名', {COLUMN => '列族名', STARTROW => '开始rowkey', ENDROW => '结束rowkey'}
包含STARTROW这行数据,不包括ENDROW这行数据。
- 指定数据版本的范围查询
scan '表名', {TIMERANGE => [时间戳1, 时间戳2]}
- delete
删除数据操作。
- 指定rowkey删除
delete '表名', 'rowkey'
- 指定rowkey以及列名删除
delete '表名', 'rowkey', '列族名:列名'
# 指定版本号
delete '表名', 'rowkey', '列族名:列名', 时间戳
- alter
修改表操作。
- 更新版本号
alter '表名', NAME => '列族', VERSION => 版本数
- 删除列族
alter '表名', NAME => '列族名', METHOD => 'delete'
# 或者
alter '表名', 'delete' => 'info'
- truncate
清空表操作。
truncate '表名'
- count
统计表有多少数据行。
count '表名'
- FILTER
过滤器。一般与get或者scan配合一起使用,对查询出来的结果进行过滤。
- 列值过滤器查询
# 根据列的值过滤
get '表名', 'rowkey', {FILTER => "ValueFilter(=, 'binary:列的值')"}
# 多行
scan '表名', {COLUMN => '列族', FILTER => "ValueFilter(=, 'binary:列的值')"}
- 列值模糊查询
# 根据列的值包含子串过滤
scan '表名', {COLUMNS => ['列族', ...], FILTER => "(QualifierFilter(=,'substring:列值'))"}
或者
get '表名', 'rowkey', {FILTER => "(QualifierFilter(=,'substring:列值'))"}
- rowkey模糊查询
scan '表名', {FILTER => "PrefixFilter('前缀值')"}
Hbase高级shell管理命令
- status
例如显示服务器状态:
status 'node01'
- whoami
显示hbase当前用户。
whoami
- list
显示所有的表。
list
- count
统计指定表的记录数。
count '表名'
- describe
展示表的结构信息。
describe '表名'
- exists
检查表是否存在,适用于表特别多的情况。
exists '表名'
- is_enabled && is_disabled
检查表是否禁用或者启用。
is_enabled '表名'
is_disabled '表名'
- alter
该命令可以改变表或者列族的模式,如:
- 为当前表增加列族:
alter '表名', NAME => '列族名', VERSIO N=> 版本数
- 为当前表删除列族
alter '表名', 'delete' => '列族名'
- enable && disable
启用或者禁用一张表。
enable '表名'
disable '表名'