一、HBase 常用Shell命令

HBase集群启动之后,下面我们来操作一下HBase

1、HBase两种形式

HBase的使用在工作中主要分为两种形式

1、在开发和调试阶段,我们会通过HBase自带的shell命令行去操作,可以执行创建表,添加数据,修改数据之类的操作,比较方便
2、在程序上线运行阶段,需要通过代码来操作HBase,HBase提供的有JavaAPI可以使用
在这里我们先看一下HBase中常用的一些shell命令

2、HBase命令分类

在这里可以把HBase中的命令总结为三种

1、基础命令
2、DDL命令
3、增删改查命令

3、进入HBase的shell命令行

如何进入HBase的shell命令行?
执行hbase shell命令即可

hbase shell

在这里插入图片描述

二、基础命令

命令	解释
status	查看集群状态
version	查看当前版本
whoami	查看当前用户

在这里插入图片描述

三、DDL命令

命令	解释
create	创建表
list	列出所有表
disable / is_disabled	禁用表/验证表是否被禁用
enable / is_enabled	启用表/验证表是否已启用
desc	查看表的详细信息
alter	修改表结构
exists	验证表是否存在
drop / truncate	删除表/清空表(删除重建)

1、创建表

命令:create ‘表名’,‘列族1’,‘列族2’,'列族N’
注意:单引号不能少,只能使用单引号,不能使用双引号。
例子:create ‘student’,‘info’,‘level’
解释:创建了一张名为student的表,表中有两个列族,分别是info和level。create后面的第一个参数是表名,后面的都是列族的名称
注意:创建表时不能指定列,只能指定列族。

create 'student','info','level'

在这里插入图片描述

2、列出所有表

命令:list

list

在这里插入图片描述

3、禁用表/验证表是否被禁用

(1)禁用表

命令:disable ‘表名’

disable 'student'

在这里插入图片描述

(2)验证表是否被禁用

命令:is_disabled '表名’

解释:返回true表示此表被禁用,此时这个表不能被操作,因为表中的数据是存在Region中的,当Region中的数据达到一定量级的时候会进行分裂,产生多个Region,多个Region会分到其它节点上面。这个时候,数据是不能被操作的,所以会有disabled这个状态。

is_disabled 'student'

在这里插入图片描述

4、启用表/验证表是否已启用

(1)启用表

命令:enable '表名’
解释:当表被手工禁用之后,想要恢复使用,需要启动表

enable 'student'

在这里插入图片描述

(2)验证表是否已启用

命令:is_enabled '表名’
解释:返回true表示表已启用,默认情况下,创建的新表都是启动状态。

is_enabled 'student'

在这里插入图片描述

5、查看表的详细信息

desc ‘表名’

desc 'student'

在这里插入图片描述

6、修改表结构

使用alter命令可以完成更改列族参数信息、增加列族、删除列族以及更改表等操作,在这里主要演示一下增加列族、修改列族和删除列族

(1)修改列族

修改列族的参数信息,例如:修改列族的版本
通过desc命令可以看到student表中列族的版本个数:
NAME => ‘info’, VERSIONS => ‘1’
NAME => ‘level’, VERSIONS => ‘1’
这里显示的这两个列族版本个数都是1,说明这两个列族中的所有列的值只能保存最新的1份数据,如果想要保存level列族中所有列的最近3个数据历史版本,可以这样操作:

alter 'student',{NAME=>'level',VERSIONS=>'3'}

在这里插入图片描述
注意:

修改已存在数据的列族的属性时,HBase 需要对列族里所有的数据进行修改,如果数据量很大,则修改可能要消耗很长时间。
这里的版本个数是和列族绑定的,不是和某一个列绑定的。

(2)增加列族

在已存在的表的基础之上增加列族,在这我们向student表中增加一个列族:about

alter 'student','about'

在这里插入图片描述

(3)删除列族

删除表中已有的列族,在这我们删除student中的about这个列族。

alter 'student',{NAME=>'about',METHOD=>'delete'}

在这里插入图片描述
注意

HBase 中的表至少要包含一个列族,因此当表中只有一个列族时,无法将其删除。

7、验证表是否存在

命令:exists '表名’

exists 'student'

在这里插入图片描述

8、删除表/清空表(删除重建)

(1)删除表

先创建一个表t1,包含1个列族info

create 't1','info'

在这里插入图片描述

然后进行删除

drop 't1'

在这里插入图片描述

注意

这里提示删除表失败了,提示的是想要删除表,需要先禁用表。

所以在这先禁用此表

disable 't1'

在这里插入图片描述

重新删除表,此时删除成功了。

drop 't1'

在这里插入图片描述

(2)清空表(删除重建)

清空表其实包含了两步,删除+重建
命令:truncate ‘表名’

先创建表t2,包含1个列族info

create 't2','info'

在这里插入图片描述

清空此表

truncate 't2'

在这里插入图片描述

注意

在清空表的时候,会自动先禁用表。

四、增删改查命令

命令												解释
put											添加数据/修改数据
get											查看数据
count										查看表中数据总条数
scan										扫描表中的数据
delete / deleteall							删除数据

1、添加数据/修改数据

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操作在执行的时候,如果指定的数据已经存在,则更新,否则就新增。

2、查看数据

在查看数据的时候有这么几种用法
命令:get ‘表名’,'Rowkey’
命令:get ‘表名’,‘Rowkey’,'列族’
命令:get ‘表名’,‘Rowkey’,‘列族:列’

(1)查询student中rowkey等于jack的所有列族中的数据

get 'student','jack'

在这里插入图片描述

(2)查询student中rowkey等于jack的info列族中的数据

 get 'student','jack','info'

在这里插入图片描述

(3)查询student中rowkey等于jack的info列族中的age列的数据

get 'student','jack','info:age'

在这里插入图片描述

3、查看表中数据总条数

命令:count ‘表名’

统计指定表中的数据总数

count 'student'

在这里插入图片描述

4、扫描表中的数据

命令:scan '表名’
扫描表中的所有数据

scan 'student'

在这里插入图片描述
注意:

scan后面可以添加过滤条件,扫描满足条件的数据,后面再分析

5、删除数据

delete有这么几种用法:
命令:delete ‘表名’,‘Rowkey’,'列族:列’
命令:delete ‘表名’,‘Rowkey’,‘列族:列’,时间戳

注意

delete 操作并不会马上删除数据,只会将对应的数据打上删除标记,只有在HBase底层合并数据时,数据才会被真正删除。

(1)删除指定Rowkey中指定列族中指定列的数据

delete 'student','jack','info:age'

在这里插入图片描述

(2)删除指定Rowkey中指定列族中指定列中时间戳小于2的数据

delete 'student','jack','info:age',2

在这里插入图片描述

注意

delete 命令不能跨列族操作,如果需要删除表中的某一行数据,则需要使用 deleteall 命令,此时不需要指定列族和列的名称

deleteall 'student','jack'

在这里插入图片描述

五、HBase的namespace(命名空间)

HBase的命名空间相当于MySQL中的Database
HBase默认有2个命名空间:分别是hbase和default
其中hbase存放系统表,default是存放用户表

1、查看命名空间

使用list_namespace命令可以查看所有的命名空间,我们创建的表默认在default这个命名空间里面

list_namespace

在这里插入图片描述

2、新建命名空间

可以选择创建一个新的namespace

create_namespace 'n1'

在这里插入图片描述

3、创建表指定命名空间

在创建表的时候可以选择创建到n1这个namespace中,如何实现呢?
使用这种格式即可:‘命名空间名称:表名’
针对default这个命名空间,在使用的时候可以省略不写

create 'n1:t1','info','level'

在这里插入图片描述
此时使用list查看所有的表

list

在这里插入图片描述
如果只想查看n1这个命名空间中的表,如何实现呢?
可以使用命令list_namespace_tables

list_namespace_tables 'n1'

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐