HBase Shell命令
文章目录
进入HBase Shell:
[root@master ~]# hbase shell
一、DDL操作
DDL:Data Definition Language,数据定义语言
HBase Shell 命令 | 功能描述 |
---|---|
list | 列出HBase中的所有表 |
create | 创建一张表 |
describe | 列出表的详细信息 |
alter | 修改表的列族 |
disable | 禁用表,使表无效 |
enable | 启用表,使表有效 |
drop | 删除一张表 |
exists | 判断表是否存在 |
1、list:查看HBase中的所有表
格式:
list
hbase(main):001:0> list
TABLE
0 row(s) in 0.1790 seconds
=> []
2、create:创建表
格式:
create ‘表名’,{NAME => ‘列族名1’,VERSIONS => <VERSIONS>},{NAME => ‘列族名2’…},…
或者
create ‘表名’,‘列族名1’,‘列族名2’,…
hbase(main):002:0> create 'lol',{NAME => 'personalInfo', VERSIONS => 1},{NAME => 'recordInfo', VERSIONS => 1},{NAME => 'assetsInfo', VERSIONS => 1}
#或者用以下更简洁的指令
hbase(main):002:0> create 'lol','personalInfo','recordInfo','assetsInfo'
3、describe:查看表的详细信息
格式:
describe ‘表名’
hbase(main):012:0> describe 'lol'
Table lol is ENABLED
lol
COLUMN FAMILIES DESCRIPTION
{NAME => 'assetsInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS
=> 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '
0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'personalInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CEL
LS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS =>
'0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
{NAME => 'recordInfo', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS
=> 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '
0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
3 row(s) in 0.1440 seconds
列族各参数含义在此不再一一列举
4、alter:修改表的列族信息
格式:
alter ‘表名’,{NAME => ‘列族名’,VERSIONS => <VERSIONS>}
其中,列族名称参数NAME必须提供,如果已存在,则修改;否则会增加一个列族
hbase(main):013:0> alter 'lol',{NAME => 'recordInfo',TTL => '15552000'}
Updating all regions with the new schema...
0/1 regions updated.
1/1 regions updated.
Done.
0 row(s) in 3.3160 seconds
(TTL(Time to Live)用于限定数据的超时时间)
5、disable:禁用表
格式:
disable ‘表名’
hbase(main):014:0> disable 'lol'
0 row(s) in 2.3560 seconds
查看表是否被禁用
hbase(main):017:0> is_disabled 'lol'
true
0 row(s) in 0.0250 seconds
6、enable:启用表
格式:
enable ‘表名’
hbase(main):018:0> enable 'lol'
0 row(s) in 1.3440 seconds
查看表是否被禁用
hbase(main):019:0> is_disabled 'lol'
false
0 row(s) in 0.0340 seconds
7、drop:删除一张表
格式:
drop ‘表名’
删除表的步骤是:
1)使用disable禁用表
2)使用drop将该禁用表删除
8、exists:查看表是否存在
格式:
exists ‘表名’
hbase(main):021:0> exists 'lol'
Table lol does exist
0 row(s) in 0.0280 seconds
二、DML操作
DML:data manipulation language,数据操纵语言
HBase Shell 命令 | 功能描述 |
---|---|
put | 向指定的单元添加值 |
scan | 通过扫描表来获取数据 |
get | 获取行或者单元的值 |
count | 统计表中行的数量,一个行键为一行 |
delete | 删除指定对象的值 |
deleteall | 删除整行 |
truncate | 清空表的数据 |
1、put:添加数据
格式:
put ‘表名’,‘行键’,‘列族名’:‘列族修饰符’,‘数值’,<timestamp>
其中时间戳timestamp可以省略,HBase会提供默认值,一般是时间服务器的当前时间
hbase(main):003:0> put 'lol','row-0001','personalInfo:nickname','hero01'
0 row(s) in 0.5420 seconds
hbase(main):004:0> put 'lol','row-0001','recordInfo:ranking','one'
0 row(s) in 0.8290 seconds
hbase(main):005:0> put 'lol','row-0001','assetsInfo: integral','10000'
0 row(s) in 0.8290 seconds
2、scan:查询整张表或者列族的数据
格式:
scan ‘表名’ ,{COLUMNS => ‘列族名’} 或者是{COLUMN => [‘列族名’:‘列族修饰符’,…]}
大括号中的内容是扫描条件,如果不指定就查询所有数据
1)查看所有数据
scan ‘表名’
hbase(main):024:0> scan 'lol'
ROW COLUMN+CELL
row-0001 column=assetsInfo: integral, timestamp=1599550428610, value=10000
row-0001 column=personalInfo:nickname, timestamp=1599553150365, value=hero01
row-0001 column=recordInfo:ranking, timestamp=1599550424208, value=one
1 row(s) in 0.0480 seconds
2)查看列族数据
scan ‘表名’,{COLUMNS => ‘列族名’}
hbase(main):026:0> scan 'lol',{COLUMNS => 'assetsInfo'}
ROW COLUMN+CELL
row-0001 column=assetsInfo: integral, timestamp=1599550428610, value=10000
1 row(s) in 0.0570 seconds
3)查看列关键字(列键 == 列族名:列族修饰符)数据
scan ‘表名’ ,{COLUMN => [‘列族名:列族修饰符’,…]}
hbase(main):002:0> scan 'lol',{COLUMN => ['personalInfo:nickname']}
ROW COLUMN+CELL
row-0001 column=personalInfo:nickname, timestamp=1599553150365, value=hero01
1 row(s) in 0.3800 seconds
3、get:获取行或者单元的值
格式:
get ‘表名’,‘行键’,{COLUMNS => [‘列族名1’,‘列族名2’,…],参数名 => 参数值…}
或者
get ‘表名’,‘行键’,{COLUMN => [‘列键1’,‘列键2’,…],参数名 => 参数值}
1)用行键查看所有所有单元
hbase(main):003:0> get 'lol','row-0001'
COLUMN CELL
assetsInfo: integral timestamp=1599550428610, value=10000
personalInfo:nickname timestamp=1599553150365, value=hero01
recordInfo:ranking timestamp=1599550424208, value=one
1 row(s) in 0.1510 seconds
2)用行键、列族查看对应的所有单元
hbase(main):004:0> get 'lol','row-0001',{COLUMNS=>'personalInfo'}
COLUMN CELL
personalInfo:nickname timestamp=1599553150365, value=hero01
1 row(s) in 0.0170 seconds
3)用行键、列键查看对应的单元
hbase(main):001:0> get 'lol','row-0001',{COLUMN=>'personalInfo:nickname'}
COLUMN CELL
personalInfo:nickname timestamp=1599553150365, value=hero01
1 row(s) in 0.9000 seconds
4、delete:删除数据
格式:
1)删除行键、列键对应的所有单元
delete ‘表名’,‘行键’,‘列键’
hbase(main):002:0> delete 'lol','row-0001','personalInfo:nickname'
0 row(s) in 0.2020 seconds
2)用行键删除一整行的所有单元
deleteall ‘表名’,‘行键’
5、truncate:删除表中所有数据
格式:
truncate ‘表名’