进入HBase客户端命令操作界面
$ bin/hbase shell
显示服务器状态
查看当前服务器状态
hbase> status
查看指定服务器状态
hbase> status ‘主机名’
显示HBase 当前用户
whoami
查看帮助命令
hbase(main):001:0> help
命名空间
列出所有命名空间
hbase> list_namespace
新建命名空间
hbase> create_namespace ‘ns1’
删除命名空间
hbase> drop_namespace ‘ns1’
该命名空间必须为空,否则会报错。
修改命名空间
hbase> alter_namespace ‘ns2’, {METHOD => ‘set’, ‘PROPERTY_NAME’ => ‘PROPERTY_VALUE’}
表
查看当前数据库中有哪些表
hbase(main):002:0> list
查看表是否存在
hbase(main):023:0> exists 表名
hbase(main):023:0> exists “student”
创建一张表
hbase(main):003:0> create ‘student’,‘info’
创建多个列族
hbase> create ‘t1’, {NAME => ‘f1’}, {NAME => ‘f2’}, {NAME => ‘f3’}
禁用一张表
disable ‘表名’
启用一张表
enable ‘表名’
查看表是否可用、是否不可用
is_enabled ‘表名’
is_disabled ‘表名’
alter
该命令可以改变表和列族的模式,例如:
为当前表增加列族:
hbase> alter ‘hbase_book’, NAME => ‘CF2’, VERSIONS => 2
为当前表删除列族:
hbase> alter ‘hbase_book’, ‘delete’ => ‘CF2’
向表中存储一些数据
hbase(main):004:0> put ‘student’,‘1001’,‘info:name’,‘Thomas’
hbase(main):005:0> put ‘student’,‘1001’,‘info:sex’,‘male’
hbase(main):006:0> put ‘student’,‘1001’,‘info:age’,‘18’
扫描查看存储的数据
hbase(main):007:0> scan ‘student’
或:查看某个rowkey范围内的数据
hbase(main):014:0> scan ‘student’,{STARTROW => ‘1001’,STOPROW => ‘1007’}
查看表结构
hbase(main):009:0> describe ‘student’
更新指定字段的数据
hbase(main):009:0> put ‘student’,‘1001’,‘info:name’,‘Nick’
hbase(main):010:0> put ‘student’,‘1001’,‘info:age’,‘100’
查看更新后的数据:
查看指定行的数据
hbase(main):012:0> get ‘student’,‘1001’
或:查看指定行指定列或列族的数据
hbase(main):013:0> get ‘student’,‘1001’,‘info:name’
统计一张表有多少行数据
hbase(main):020:0> count ‘student’
删除数据
删除掉某个rowKey中某一列的数据
hbase(main):016:0> delete 'student','1001','info:sex'
删除某一个rowKey全部的数据
hbase(main):015:0> deleteall 'student','1001'
清空表数据
hbase(main):017:0> truncate ‘student’
修改表名
HBase没有rename命令,可以通过快照功能修改表名,详见下述。
删除表
首先需要先让该表为disable状态,使用命令:
hbase(main):018:0> disable ‘student’
然后才能drop这个表,使用命令:
hbase(main):019:0> drop ‘student’
(尖叫提示:如果直接drop表,会报错:Drop the named table. Table must first be disabled)
快照
查看快照
hbase> list_snapshots ‘ns1’
新建快照
hbase> snapshot ‘sourceTable’, ‘snapshotName’
从快照复制生成一个新表:
hbase> clone_snapshot ‘snapshotName’, ‘gld:student’
分区
预分区
在建表时预分10个区:
create’customer’,‘info’,{SPLITS=>[‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’]}
则每个分区的Start Key和End Key分别为:(~, 1),[1, 2),[2, 3),[3, 4),[4, 5),[5, 6),[6, 7),[7, 8),[8, 9),[9, ~)
查看HDFS是可以看到这个表下有10个文件夹(如果没有预分区,则只有一个文件夹):
手动分区
一开始没有分区:
使用切分键’1’一分为二:
hbase>split ‘tableName’,‘splitKey’
hbase>split ‘gld:student’,‘1’
继续将第二个Region进行切分,以’2’作为切分键:
hbase>split ‘gld:student,1,1538223641947’,‘2’
合并分区
hbase>merge_region ‘ENCODED_REGIONNAME’,‘ENCODED_REGIONNAME’
hbase(main):125:0> merge_region ‘e306f74bf37ea659cb1945514698eeaa’ ,‘fbd781060852359d2d52a18b728eac77’