HBase Shell命令操作
HBase为用户提供了一个非常方便的命令行操作方式,我们称之为HBase Shell。
HBase提供了大多数HBase命令,通过HBase Shell 用户可以方便地创建,删除及修改表,还可以向表中添加数据,列出表中的相关信息等。
在启动HBase之后,我们可以通过执行以下命令启动HBase Shell:
$bin/hbase shell
1创建表
执行create ‘t1’,’f1’ 命令,将在HBase中创建一张表名为’t1’,列族名为f1的表,命令及返回信息如下:
hbase(main):001:0> create 't1','f1'
0 row(s) in 1.5860 seconds
=> Hbase::Table - t1
创建表的时候需要指定表名与列族名,列名在添加数据的时候动态指定.
注意:在HBase Shell命令行模式下,若输入错误需要删除时,直接按[退格]键将不起作用,可以按[Ctrl+退格]键进行删除。
2添加数据
向表t1中添加一条数据,rowKey为row1,列name的值为zhangsan,命令如下
put 't1','row1','f1:name','zhangsan'
在添加一条数据
put 't1','row2','f1:age','40'
3扫描全表
scan 't1'
ROW COLUMN+CELL
row1 column=f1:name, timestamp=1585716259087, value=zhangsan
row2 column=f1:age, timestamp=1585716278651, value=40
4查询一行数据
使用get命令可以查询表中一整行数据。例如,查询表t1中rowKey为row1的整行数据:
get 't1','row1'
COLUMN CELL
f1:name timestamp=1585716259087, value=zhangsan
5修改表
修改表同样使用put命令。例如,修改表t1中行键row1对应的name值,将zhangsan改为lisi,命令如下:
put 't1','row1','f1:name','lisi'
6删除特定单元格中的值,命令如下:
delete 't1','row1','f1:age'
7删除一整行数据
deleteall 't1','row1'
8删除整张表
disable命令可以禁用表,使表无效,drop命令可以删除表。若需要删除整张表,需要先执行disable命令,再执行drop命令
disable 't1'
drop 't1'
9列出所有的表
list
10查询表中的记录数
count 't1'
11查询表是否存在
exists 't1'
12批量执行命令
HBase还支持将多个Shell命令放入一个文件中,每行一个命令,然后读取文件中的命令,批量执行。例如,在HBase安装目录下新建一个文件sample_commands.txt,向其加入以下命令:
cd /home/hadoop/hbase 在该目录下
create 'test' ,'cf'
list
put 'test','row1','cf:a','value1'
put 'test','row2','cf:b','value2'
put 'test','row3','cf:c','value3'
put 'test','row4','cf:d','value4'
scan 'test'
get 'test' ,'row1'
disable 'test'
enable 'test'
然后在启动HBase Shell时,将该文件的路径作为一个参数出入。这样文本中的每一个命令都会被执行,且每个命令的执行结果会显示在控制台.
bin/hbase shell ../sample_commands.txt
控制台打印如下:
TABLE
t1
test
2 row(s) in 0.0160 seconds
0 row(s) in 0.1410 seconds
0 row(s) in 0.0160 seconds
0 row(s) in 0.0120 seconds
0 row(s) in 0.0100 seconds
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1585718204324, value=value1
row2 column=cf:b, timestamp=1585718204358, value=value2
row3 column=cf:c, timestamp=1585718204371, value=value3
row4 column=cf:d, timestamp=1585718204384, value=value4
4 row(s) in 0.0900 seconds
COLUMN CELL
cf:a timestamp=1585718204324, value=value1
1 row(s) in 0.0270 seconds
0 row(s) in 2.2670 seconds