HBase Shell
$ ./bin/hbase shell # 进入交互界面
DDL操作:
-
create:创建表(默认命名空间为default)
# create '表名','列族1','列族2'... hbase(main):005:0> create 'student','info' 0 row(s) in 1.4250 seconds => Hbase::Table - student
-
list:列出所有table
hbase(main):005:0> list # 列出所有的Table TABLE student 1 row(s) in 0.0160 seconds => ["student"]
-
describe '表名':查看表详细信息
# 查看表详细信息describe hbase(main):007:0> describe 'student' Table student is ENABLED student COLUMN FAMILIES DESCRIPTION {NAME => 'info', 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'} 1 row(s) in 0.1090 seconds
-
NAME:列族名
-
BLOOMFILTER:布隆过滤器
-
VERSIONS:版本数,当前列族可以存多少版本
-
-
alter:修改某列族的信息:
# alter '表名',{NAME=>'列族名' ....} # 比如:修改VERSION版本数 hbase(main):011:0> alter 'student',{NAME=>'info',VERSIONS=>3} hbase(main):012:0> describe 'student' # 再次查看 {NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '3',....
-
删除表,需要先disabled
# 删除表,需要先disabled,再drop hbase(main):016:0> disable 'student' hbase(main):017:0> drop 'student'
命名空间:
-
查看命名空间:list_namespace
hbase(main):019:0> list_namespace NAMESPACE default hbase 2 row(s) in 0.0330 seconds
-
创建命名空间:create_namespace '空间名'
hbase(main):020:0> create_namespace 'bigdata'
-
创建表到指定命名空间
hbase(main):022:0> create 'bigdata:student','info' 0 row(s) in 2.2200 seconds => Hbase::Table - bigdata:student
-
删除命名空间:drop_namespace (必须是空的命名空间,要先删表)
hbase(main):023:0> disable 'bigdata:student' 0 row(s) in 2.2510 seconds hbase(main):024:0> drop 'bigdata:student' 0 row(s) in 1.2370 seconds hbase(main):026:0> drop_namespace 'bigdata' 0 row(s) in 0.8750 seconds
DML
-
put:增加,修改数据
# put '表名','RowKey','列族:列名','数据' hbase(main):030:0> put 'test','1001','info1:name','zhangsan'
-
scan:扫描查询(最大范围是查整个table)
# 注意:下面查询结果为3条数据 hbase(main):040:0> scan 'test' ROW COLUMN+CELL 1001 column=info1:age, timestamp=1571381227061, value=17 1001 column=info1:name, timestamp=1571380877053, value=zhangsan 1001 column=info2:addr, timestamp=1571381241065, value=shanghai 1002 column=info1:age, timestamp=1571381266364, value=16 1002 column=info1:name, timestamp=1571381256744, value=lily 1002 column=info2:addr, timestamp=1571381276540, value=beijing 1003 column=info2:addr, timestamp=1571381290769, value=nanjing 3 row(s) in 0.0590 seconds # 查看,左闭右开区间 hbase(main):044:0> scan 'test',{STARTROW=>'1001',ENDROW=>'1003'} # 查看,覆盖的版本,已经type hbase(main):059:0> scan 'test',{RAW=>TRUE,VERSIONS=>3} ROW COLUMN+CELL 1001 column=info1:age, timestamp=1571381227061, value=17 1001 column=info1:name, timestamp=1571382287224, type=DeleteColumn 1001 column=info1:name, timestamp=1571382179439, value=zhangsansan 1001 column=info1:name, timestamp=1571382130052, value=zhang 1001 column=info2:addr, timestamp=1571381241065, value=shanghai 1002 column=info1:age, timestamp=1571381266364, value=16 1002 column=info1:name, timestamp=1571381256744, value=lily 1002 column=info2:addr, timestamp=1571381276540, value=beijing 1003 column=info2:addr, timestamp=1571381290769, value=nanjing
-
get:查询(最大范围是查RowKey)
# 查看一条数据,一个RowKey hbase(main):041:0> get 'test','1001' COLUMN CELL info1:age timestamp=1571381227061, value=17 info1:name timestamp=1571380877053, value=zhangsan info2:addr timestamp=1571381241065, value=shanghai 1 row(s) in 0.0050 seconds # 查看某列 hbase(main):042:0> get 'test','1001','info1:name' COLUMN CELL info1:name timestamp=1571380877053, value=zhangsan
-
delete:删除数据,在shell命令中必须指定到列,API中可以指定到列族
# 指定到列 hbase(main):054:0> delete 'test','1001','info1:name'
-
alter:变更表信息
# 将info列族修改为可以存放3个版本 hbase(main):004:0> alter 'stu',{NAME=>'info',VERSIONS=>3}
-
多版本查询
hbase(main):007:0> get 'stu','1001',{COLUMN=>'info:name',VERSIONS=>3} COLUMN CELL info:name timestamp=1571383299883, value=lucy info:name timestamp=1571383293258, value=lily