HBase Shell 常用基本操作命令
1.启动/退出
[root@scnode01~]# hbase shell
hbase(main):001:0> exit
[root@scnode01~]#
2.help
查看某一组命令下的所有命令的简介和简单示范
help 'ddl'
查看某个命令的详细使用
help 'shell_name'
3.general组中的命令
查看集群状态
hbase(main):001:0> status
查看集群版本
hbase(main):001:0> version
当前登录用户角色信息
hbase(main):001:0> whoami
查看对某张表进行操作的基本命令
hbase(main):001:0> table_help
4.ddl组中的命令
查看数据库中有哪些表
hbase(main):001:0> list
查看表属性信息
hbase(main):001:0> describe 'table_name'
creat创建表 create ‘表名’, ‘列族1’, ‘列族2’…
hbase(main):001:0> create 'person', 'name', 'age'
相当于
hbase(main):001:0> create 'person',{NAME=>'name' },{NAME=>'age'}
建表同时可以指定表属性信息
hbase(main):001:0> create 'user_info',{NAME=>'base_info',VERSIONS=>3 },{NAME=>'extra_info',IN_MEMORY=>'true'}
alter 修改表
(1)增加列族
hbase(main):001:0> alter 'table_name', 'add_family'
或
hbase(main):001:0> alter 'table_name', {NAME => 'add_family'}
当然,新增加的列可以设置属性,比如
hbase(main):001:0> alter 'table_name', {NAME => 'add_family', VERSIONS => 3}
(2)删除列族
hbase(main):001:0> alter 'table_name', {NAME => 'delete_family', METHOD => 'delete'}
或
hbase(main):001:0> alter 'table_name', 'delete' => 'delete_family'
(3) 添加列族f1同时删除列族f2
hbase(main):001:0> alter 'user', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}
(4) 修改列族:将user表的f1列族版本号改为5
hbase(main):001:0> alter 'user', NAME => 'f1', VERSIONS => 5
判断表是否存在
hbase(main):001:0> exists 'table_name'
禁用表与启用表
(1) 禁用表
hbase(main):001:0> disable 'table_name'
(2) 查看表是否禁用
hbase(main):001:0> is_disabled 'table_name'
(3) 启用表
hbase(main):001:0> enable 'table_name'
(4) 查看表是否启用
hbase(main):001:0> is_enabled 'table_name'
删除表
hbase的某些版本,在删除表前,需要先禁用表
hbase(main):001:0> disable 'table_name'
hbase(main):001:0> drop 'table_name'
5.dml组中的命令
插入数据
(1)put ‘表名’,‘rowkey’,‘列族名:列名’,‘值’
put 'person','0001','name:firstname', 'Jed'
(2)可以指定时间戳,否则默认为系统当前时间
put 'person','0002','info:age',20,1482077777778
查询某行
(1) 查询某行
get 'person', '0001'
(2) 查询某行,指定列名
get 'person', '0001', 'name:firstname'
(3) 查询某行,添加其他限制条件
查询person表中,rowkey为’0001’的这一行,只显示name:firstname这一列,并且只显示最新的3个版本
get 'person', '0001', {COLUMNS => 'name:firstname', VERSIONS => 3}
查看指定列的内容,并限定显示最新的3个版本和时间范围
get 'person', '0001', {COLUMN => 'name:first', VERSIONS => 3, TIMERANGE => [1392368783980, 1392380169184]}
查询person表中,rowkey为’rk0001’,且某列的内容为’中国’的记录
scan 'person', 'rk0001', {FILTER => "ValueFilter(=, 'binary:中国')"}
全表扫描
(1) 扫描全表
scan 'person'
(2) 扫描时指定列族
scan 'person', {COLUMNS => 'name'}
(3) 扫描时指定列族,并限定显示最新的5个版本的内容
scan 'person', {COLUMNS => 'name', VERSIONS => 5}
(4) 设置开启Raw模式,开启Raw模式会把那些已添加删除标记但是未实际删除的数据也显示出来
scan 'person', {COLUMNS => 'name', RAW => true}
(5) 列的过滤
查询user表中列族为info和data的信息
scan 'user', {COLUMNS => ['info', 'data']}
查询user表中列族为info,列名为name、列族为data,列名为pic的信息
scan 'user', {COLUMNS => ['info:name', 'data:pic']}
查询user表中列族为info,列名为name的信息,并且版本最新的5个
scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}
查询user表中列族为info和data且列名含有a字符的信息
scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}
查询user表中列族为info,rk范围是[rk0001, rk0003)的数据
scan 'people', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}
查询user表中row key以rk字符开头的
scan 'user',{FILTER=>"PrefixFilter('rk')"}
查询user表中指定时间范围的数据
scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}
删除数据
delete 'table_name', 'rowkey', 'family:column'
清空表
truncate 'table_name'
6.其他
(1) 查看命名空间
hbase(main):015:0> list_namespace
NAMESPACE
default # 用户创建的表放在这里
hbase # 系统表空间
(2) 把表中数据强制写到磁盘
flush 'table_name'