赞
踩
HBase集群启动之后,下面我们来操作一下HBase
HBase的使用在工作中主要分为两种形式
1、在开发和调试阶段,我们会通过HBase自带的shell命令行去操作,可以执行创建表,添加数据,修改数据之类的操作,比较方便
2、在程序上线运行阶段,需要通过代码来操作HBase,HBase提供的有JavaAPI可以使用
在这里我们先看一下HBase中常用的一些shell命令
在这里可以把HBase中的命令总结为三种
1、基础命令
2、DDL命令
3、增删改查命令
如何进入HBase的shell命令行?
执行hbase shell命令即可
hbase shell
命令 解释
status 查看集群状态
version 查看当前版本
whoami 查看当前用户
命令 解释
create 创建表
list 列出所有表
disable / is_disabled 禁用表/验证表是否被禁用
enable / is_enabled 启用表/验证表是否已启用
desc 查看表的详细信息
alter 修改表结构
exists 验证表是否存在
drop / truncate 删除表/清空表(删除重建)
命令:create ‘表名’,‘列族1’,‘列族2’,'列族N’
注意:单引号不能少,只能使用单引号,不能使用双引号。
例子:create ‘student’,‘info’,‘level’
解释:创建了一张名为student的表,表中有两个列族,分别是info和level。create后面的第一个参数是表名,后面的都是列族的名称
注意:创建表时不能指定列,只能指定列族。
create 'student','info','level'
命令:list
list
命令:disable ‘表名’
disable 'student'
命令:is_disabled '表名’
解释:返回true表示此表被禁用,此时这个表不能被操作,因为表中的数据是存在Region中的,当Region中的数据达到一定量级的时候会进行分裂,产生多个Region,多个Region会分到其它节点上面。这个时候,数据是不能被操作的,所以会有disabled这个状态。
is_disabled 'student'
命令:enable '表名’
解释:当表被手工禁用之后,想要恢复使用,需要启动表
enable 'student'
命令:is_enabled '表名’
解释:返回true表示表已启用,默认情况下,创建的新表都是启动状态。
is_enabled 'student'
desc ‘表名’
desc 'student'
使用alter命令可以完成更改列族参数信息、增加列族、删除列族以及更改表等操作,在这里主要演示一下增加列族、修改列族和删除列族
修改列族的参数信息,例如:修改列族的版本
通过desc命令可以看到student表中列族的版本个数:
NAME => ‘info’, VERSIONS => ‘1’
NAME => ‘level’, VERSIONS => ‘1’
这里显示的这两个列族版本个数都是1,说明这两个列族中的所有列的值只能保存最新的1份数据,如果想要保存level列族中所有列的最近3个数据历史版本,可以这样操作:
alter 'student',{NAME=>'level',VERSIONS=>'3'}
注意:
修改已存在数据的列族的属性时,HBase 需要对列族里所有的数据进行修改,如果数据量很大,则修改可能要消耗很长时间。
这里的版本个数是和列族绑定的,不是和某一个列绑定的。
在已存在的表的基础之上增加列族,在这我们向student表中增加一个列族:about
alter 'student','about'
删除表中已有的列族,在这我们删除student中的about这个列族。
alter 'student',{NAME=>'about',METHOD=>'delete'}
注意
HBase 中的表至少要包含一个列族,因此当表中只有一个列族时,无法将其删除。
命令:exists '表名’
exists 'student'
先创建一个表t1,包含1个列族info
create 't1','info'
然后进行删除
drop 't1'
注意
这里提示删除表失败了,提示的是想要删除表,需要先禁用表。
所以在这先禁用此表
disable 't1'
重新删除表,此时删除成功了。
drop 't1'
清空表其实包含了两步,删除+重建
命令:truncate ‘表名’
先创建表t2,包含1个列族info
create 't2','info'
清空此表
truncate 't2'
注意
在清空表的时候,会自动先禁用表。
命令 解释
put 添加数据/修改数据
get 查看数据
count 查看表中数据总条数
scan 扫描表中的数据
delete / deleteall 删除数据
HBase中没有insert方法,它也属于key-value类型的NoSQL数据库,类似于HashMap这种数据结构,所以它提供了put方法添加数据
命令:put ‘表名’,‘Rowkey’,‘列族:列’,'value’
添加2条数据,rowkey分别为:jack和tom
put ‘student’,‘jack’,‘info:sex’,‘man’
put ‘student’,‘jack’,‘info:age’,‘22’
put ‘student’,‘jack’,‘level:class’,‘A’
put ‘student’,‘tom’,‘info:sex’,‘woman’
put ‘student’,‘tom’,‘info:age’,‘20’
put ‘student’,‘tom’,‘level:class’,‘B’
注意:
HBase中没有修改方法,所以重复执行put就是修改操作了。
所以put操作在执行的时候,如果指定的数据已经存在,则更新,否则就新增。
在查看数据的时候有这么几种用法
命令:get ‘表名’,'Rowkey’
命令:get ‘表名’,‘Rowkey’,'列族’
命令:get ‘表名’,‘Rowkey’,‘列族:列’
get 'student','jack'
get 'student','jack','info'
get 'student','jack','info:age'
命令:count ‘表名’
统计指定表中的数据总数
count 'student'
命令:scan '表名’
扫描表中的所有数据
scan 'student'
注意:
scan后面可以添加过滤条件,扫描满足条件的数据,后面再分析
delete有这么几种用法:
命令:delete ‘表名’,‘Rowkey’,'列族:列’
命令:delete ‘表名’,‘Rowkey’,‘列族:列’,时间戳
注意
delete 操作并不会马上删除数据,只会将对应的数据打上删除标记,只有在HBase底层合并数据时,数据才会被真正删除。
delete 'student','jack','info:age'
delete 'student','jack','info:age',2
注意
delete 命令不能跨列族操作,如果需要删除表中的某一行数据,则需要使用 deleteall 命令,此时不需要指定列族和列的名称
deleteall 'student','jack'
HBase的命名空间相当于MySQL中的Database
HBase默认有2个命名空间:分别是hbase和default
其中hbase存放系统表,default是存放用户表
使用list_namespace命令可以查看所有的命名空间,我们创建的表默认在default这个命名空间里面
list_namespace
可以选择创建一个新的namespace
create_namespace 'n1'
在创建表的时候可以选择创建到n1这个namespace中,如何实现呢?
使用这种格式即可:‘命名空间名称:表名’
针对default这个命名空间,在使用的时候可以省略不写
create 'n1:t1','info','level'
此时使用list查看所有的表
list
如果只想查看n1这个命名空间中的表,如何实现呢?
可以使用命令list_namespace_tables
list_namespace_tables 'n1'
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。