文章目录
- 1.其他操作
- 2 表的操作
- 2.1. list:列出HBase的所有表
- 2.2 create:创建一个表
- 2.3 desc:提供了一个表的描述
- 2.4 disable**:** 禁用表
- 2.5 enable**:** 启用一个表
- 2.6. exists**:** 验证表是否存在
- 2.7. count:统计行数
- 2.8. drop**:** 从HBase中删除表
- 2.9 truncate:清空表
- 2.10 get_splits:获取Region
- 2.11 alter:修改表
- 3.数据操作
- 3.1 scan**:** 扫描并返回表数据
- 3.2 put
- 3.3 get
- 3.4 delete
首先启动master
hbase-daemon.sh start master
使用hbase shell可以进入一个shell命令行界面!出现下图代表成功
HBase shell
1.其他操作
1.查看集群状态
使用status可以查看集群状态,默认为summary,可以选择‘simple’和‘detailed’来查看详情。
hbase(main):001:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 7.0000 average load
2.查看版本
hbase(main):002:0> version
1.2.0-cdh5.14.2, rUnknown, Tue Mar 27 13:31:54 PDT 2018
3.查看操作用户及组信息
hbase(main):004:0> whoami
root (auth:SIMPLE)groups: root
4.查看表操作信息
table_help
5.查看帮助信息
help
6.查看具体命令的帮助
help 'get'
注意引号是必须的!
2 表的操作
2.1. list:列出HBase的所有表
hbase(main):007:0> list
TABLE
abc
cust
customer
emp_basic
4 row(s) in 0.0510 seconds
list后可以使用*等通配符来进行表的过滤!
hbase(main):016:0> list 'c.*'
TABLE
cust
customer
2 row(s) in 0.0060 seconds
2.2 create:创建一个表
创建表时,需要指定表名和列族名,而且至少需要指定一个列族,没有列族的表是没有任何意义的。
创建表时,还可以指定表的属性,表的属性需要指定在列族上!
格式:
create '表名', { NAME => '列族名1', 属性名 => 属性值}, {NAME => '列族名2', 属性名 => 属性值}, …
如果你只需要创建列族,而不需要定义列族属性,那么可以采用以下快捷写法:
create'表名','列族名1' ,'列族名2', …
hbase(main):001:0> create 'student','info'
2.3 desc:提供了一个表的描述
hbase(main):003:0> desc 'student'
Table student is ENABLED
student
COLUMN FAMILIES DESCRIPTION
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CE
LLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_V
ERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'}
1 row(s) in 0.0320 seconds
2.4 disable**😗* 禁用表
停用表后,可以防止在对表做一些维护时,客户端依然可以持续写入数据到表。一般在删除表前,必须停用表。
在对表中的列族进行修改时,也需要停用表。
hbase(main):004:0> disable 'student'
disable_all ‘正则表达式’ 可以使用正则来匹配表名。
is_disabled 可以用来判断表是否被停用。
hbase(main):006:0> is_disabled 'student'
true
2.5 enable**😗* 启用一个表
和停用表类似。enable ‘表名’用来启用表,is_enabled ‘表名’用来判断一个表是否被启用。
enable_all ‘正则表达式’可以通过正则来过滤表,启用复合条件的表。
2.6. exists**😗* 验证表是否存在
hbase(main):007:0> exists 'student'
Table student does exist
2.7. count:统计行数
hbase(main):014:0> count 'student'
0 row(s) in 0.0260 seconds=> 0
2.8. drop**😗* 从HBase中删除表
删除表前,需要先disable表,否则会报错。ERROR: Table xxx is enabled. Disable it first.
hbase(main):011:0> drop 'person'
2.9 truncate:清空表
hbase(main):015:0> truncate 'student'
Truncating 'student' table (it may take a while):- Disabling table...- Truncating table...
0 row(s) in 3.4410 seconds
2.10 get_splits:获取Region
获取表所对应的Region个数。每个表在一开始只有一个region,之后记录增多后,region会被自动拆分。
hbase(main):017:0> get_splits 'student'
Total number of splits = 1=> []
2.11 alter:修改表
alter命令可以修改表的属性,通常是修改某个列族的属性。
增加:alter ‘表名’,NAME=>‘列簇名’
删除:alter ‘表名’,NAME=>‘列簇名’,METHOD=>‘delete’
hbase(main):021:0> alter 'student','studentno'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9240 seconds
hbase(main):028:0> alter 'student',NAME=>'studentno',METHOD=>'delete'
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 1.9420 seconds
3.数据操作
3.1 scan**😗* 扫描并返回表数据
scan命令可以按照rowkey的字典顺序来遍历指定的表的数据。
scan ‘表名’:默认当前表的所有列族。
scan ‘表名’,{COLUMNS=> [‘列族:列名’],…} : 遍历表的指定列
scan 'emp_basic',{COLUMNS=>'emp:name'}
scan ‘表名’, { STARTROW => ‘起始行键’, ENDROW => ‘结束行键’ }:指定rowkey范围。如果不指定,则会从表的开头一直显示到表的结尾。区间为左闭右开。
(由于rowkey并不是整型,所以不会按照数字顺序筛选)
scan 'emp_basic',{STARTROW=>'100',ENDROW=>'200'}
scan ‘表名’, { LIMIT => 行数量}: 指定返回的行的数量
scan 'emp_basic',{LIMIT=>5}
scan ‘表名’, {VERSIONS => 版本数}:返回cell的多个版本
scan 'emp_basic',{VERSIONS=>5}
scan ‘表名’, { TIMERANGE => [最小时间戳, 最大时间戳]}:指定时间戳范围
注意:此区间是一个左闭右开的区间,因此返回的结果包含最小时间戳的记录,但是不包含最大时间戳记录
scan ‘表名’, { RAW => true, VERSIONS => 版本数}
显示原始单元格记录,在Hbase中,被删掉的记录在HBase被删除掉的记录并不会立即从磁盘上清除,而是先被打上墓碑标记,然后等待下次major compaction的时候再被删除掉。注意RAW参数必须和VERSIONS一起使用,但是不能和COLUMNS参数一起使用。
scan ‘表名’, { FILTER => “过滤器”} and|or { FILTER => “过滤器”}: 使用过滤器扫描
3.2 put
put可以新增记录还可以为记录设置属性。
put ‘表名’, ‘行键’, ‘列名’, ‘值’
put ‘表名’, ‘行键’, ‘列名’, ‘值’,时间戳
put ‘表名’, ‘行键’, ‘列名’, ‘值’, { ‘属性名’ => ‘属性值’}
put ‘表名’, ‘行键’, ‘列名’, ‘值’,时间戳, { ‘属性名’ =>‘属性值’}
put 'student','1001','info:name','Nick'put 'student','1001','info:sex','male'put 'student','1001','info:age','18'put 'student','1002','info:name','Janna'put 'student','1002','info:sex','female'put 'student','1002','info:age','20'
3.3 get
get支持scan所支持的大部分属性,如COLUMNS,TIMERANGE,VERSIONS,FILTER
get 'student','1001'
3.4 delete
删除某rowkey的全部数据
deleteall 'student','1001'
删除某rowkey的某一列数据:
delete 'student','1002','info:sex'