本文共 6682 字,大约阅读时间需要 22 分钟。
如果忘记了完整的命令,从左输入命令部分内容,然后点击tab键会提示完整的命令
如输入cr
然后点击tab 就会有以下提示
hbase(main):001:0> createcreate create_namespace
注意,输入的
表名,行名,列族名,列名和值等
必须都要带引号
,否则会认为是一个命令。
注意,每个命令之后不需要分号
;
结束。
# hbase shell
hbase(main):002:0> help 'create'
hbase(main):003:0> status1 active master,0 backup masters, 3 servers,0 dead,2.0000 average load
hbase(main):004:0> version2.0.2.3.1.4.0-315, r, Fri Aug 23 05:18:48 UTC 2019
hbase(main):042:0> scan 'hbase:meta'
hbase(main):043:0> list_namespace_tables 'hbase'
数据定义语言(Data Defination Language,DDL)操作主要操作表和库,查看、修改、删除表等操作。
命名空间相当于数据库
hbase(main):005:0>create_namespace 'namespace1'
hbase(main):006:0>list_namespace
hbase(main):007:0>drop_namespace 'namespace1'
创建表table1,列族为column_famaly1,column_famaly2
创建表必须有至少一个列族,多个列族用逗号分开。不指定命名空间,表创建在默认命名空间
hbase(main):008:0> create 'table1','column_famaly1','column_famaly2'
指定命名空间为namespace1 ,格式为create '命名空间:表名','列族名','列族名','列族名...'
hbase(main):009:0> create 'namespace1:table1','column_famaly1','column_famaly2'
创建表时指定列族可以保存的版本,如版本号为3,则可以保存3个版本,不指定默认为1
create '表名',{NAME=>'列族名1',VERSIONS=>给定一个版本号},{NAME=>'列族名2',VERSIONS=>给定的版本号}
hbase(main):010:0> list
hbase(main):011:0> list_namespace_tables 'namespace1'
desc和decribe都可以
可查看各个列族信息和版本
hbase(main):012:0> describe 'table1'
带命名空间的表
hbase(main):013:0> describe 'namespace1:table1'
描述信息解释
NAME:表示列族名。 BLOOMFILTER:表示为列族级别的类型(读者只作了解即可)。 VERIONS:表示版本数。 N_MEMORY:设置是否存入内存。 KEEP_DELETED_CELLS:设置被删除的数据,在基于时间的历史数据查询中是否依然可见。 DATA_BLOCK_ENCODING:表示数据块的算法(读者只作了解即可)。 TTL:表示版本存活的时间。 COMPRESSION:表示设置压缩算法。 MIN_VERSIONS:表示最小版本数。 BLOCKCACHE:表示是否设置读缓存。 REPLICATION:表示设置备份。
hbase(main):014:0> alter 'table1',{NAME=>'column_famaly1',METHOD=>'delete'}
VERSIONS为可以保存的版本,5表示可以保存5个版本
若该列族已存在,也可以直接更新列族的版本
hbase(main):015:0> alter 'table1',{NAME=>'column_famaly1',VERSIONS => 5}
需要先把表设置为不可用 disable。
hbase(main):016:0> disable'table1'
然后才能删除。
hbase(main):017:0> drop 'table1'
hbase(main):018:0> exists 'table1'
hbase(main):019:0> is_enabled 'table1'
DML(Data Manipulation Language,数据操作语言)操作主要操作表中的数据,对表的数据进行添加、修改、删除和查询。
在默认命名空间下,创建一个student
表,有列族info
和scores
(个人信息和科目分数)
info可以保存的版本为3,scores版本为1
hbase(main):020:0> create 'student',{NAME=>'info',VERSIONS=>3},{NAME=>'scores',VERSIONS=>1}
插入数据的时候需要指定命名空间:表名
,行名
,列族:列名
和值
,命名空间和列名
可省
put '[命名空间:]表名','行名','列族名[:列名]','值'
向student表中增加以下数据
hbase(main):021:0> put 'student','rowkey1','info:name','xhx'hbase(main):022:0> put 'student','rowkey1','info:age','20'hbase(main):023:0> put 'student','rowkey1','info:sex','boy'hbase(main):024:0> put 'student','rowkey2','scores:math','90'
如果不想指定列名就直接写列族:
,冒号后面不加列名
hbase(main):025:0> put 'student','rowkey1','info:','nocol'
获取 student表的所有数据。如果有多个版本数据会显示时间戳最近的一条数据。
hbase(main):026:0> scan 'student'ROW COLUMN+CELL rowkey1 column=info:, timestamp=1619157750674, value=nocolrowkey1 column=info:age, timestamp=1619157768685, value=20 rowkey1 column=info:name, timestamp=1619158508679, value=xhx3 rowkey1 column=info:sex, timestamp=1619157787678, value=boyrowkey2 column=scores:math, timestamp=1619157787700, value=90
扫描查看数据,指定查看行
数
hbase(main):040:0> scan 'student',{LIMIT=>2}ROW COLUMN+CELL rowkey1 column=info:, timestamp=1619157750674, value=nocolrowkey1 column=info:age, timestamp=1619157768685, value=20
扫描查看数据,指定开始和结束的rowkey,左闭右开(rowkey1 <= rowkey < rowkey2)
hbase(main):041:0> scan 'student',{STARTROW => 'rowkey1', STOPROW => 'rowkey2'}ROW COLUMN+CELL rowkey1 column=info:, timestamp=1619157750674, value=nocolrowkey1 column=info:age, timestamp=1619157768685, value=20 rowkey1 column=info:name, timestamp=1619158508679, value=xhx3 rowkey1 column=info:sex, timestamp=1619157787678, value=boy
获取 student表的 rowkey1行的所有数据。如果有多版本只显示时间戳最新一条的数据。
hbase(main):027:0> get 'student','rowkey1'COLUMN CELL info: timestamp=1619157750674, value=nocolinfo:age timestamp=1619157768685, value=20 info:name timestamp=1619158508679, value=xhx3 info:sex timestamp=1619157787678, value=boy
获取 student表的 rowkey1行的info列族下所有数据。如果有多版本只显示时间戳最新一条的数据
hbase(main):028:0> get 'student','rowkey1','info'COLUMN CELL info: timestamp=1619157750674, value=nocolinfo:age timestamp=1619157768685, value=20 info:name timestamp=1619158508679, value=xhx3 info:sex timestamp=1619157787678, value=boy
注意,获取列族 info
和info:
的结果是不同的。
hbase(main):029:0> get 'student','rowkey1','info:'COLUMN CELL info: timestamp=1619157750674, value=nocol
获取student表的 rowkey1行的info列族下列名为name的数据。如果有多版本只显示时间戳最新一条的数据
hbase(main):030:0> get 'student','rowkey1','info:name'COLUMN CELL info:name timestamp=1619158508679, value=xhx3
更新数据,增加多版本数据,列族info可以保存的版本为3条数据
更新表student
行rowkey1
列族info
列name
的数据
hbase(main):031:0> put 'student','rowkey1','info:name','xhx1'hbase(main):032:0> put 'student','rowkey1','info:name','xhx2'hbase(main):033:0> put 'student','rowkey1','info:name','xhx3'
hbase(main):034:0> get 'student','rowkey1',{COLUMN=>'info:name',VERSIONS=>3}info:name timestamp=1619158508679, value=xhx3info:name timestamp=1619158507550, value=xhx2info:name timestamp=1619158505321, value=xhx1
hbase(main):035:0> get 'student','rowkey1',{COLUMN=>'info:name',TIMESTAMP=>1619158507550}info:name timestamp=1619158507550, value=xhx2
如student表中有rowkey1和rowkey2两行, 则返回2 row(s)
hbase(main):036:0> count 'student'
删除列sex
hbase(main):037:0> delete 'student','rowkey1','info:sex'
删除student表中rowkey1行的所有列
也就是相当于删除了rowkey1行的所有数据
hbase(main):038:0> deleteall 'student','rowkey1'
hbase(main):039:0> truncate 'student'
转载地址:http://mduzi.baihongyu.com/