当前位置:   article > 正文

Hbase05:HBase 常用Shell命令:基础命令、DDL命令、增删改查、命名空间相关命令_hbase中切换命名空间的命令

hbase中切换命名空间的命令

一、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
  • 1

在这里插入图片描述

二、基础命令

命令	解释
status	查看集群状态
version	查看当前版本
whoami	查看当前用户
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

三、DDL命令

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

1、创建表

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

create 'student','info','level'
  • 1

在这里插入图片描述

2、列出所有表

命令:list

list
  • 1

在这里插入图片描述

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

(1)禁用表

命令:disable ‘表名’

disable 'student'
  • 1

在这里插入图片描述

(2)验证表是否被禁用

命令:is_disabled '表名’

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

is_disabled 'student'
  • 1

在这里插入图片描述

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

(1)启用表

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

enable 'student'
  • 1

在这里插入图片描述

(2)验证表是否已启用

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

is_enabled 'student'
  • 1

在这里插入图片描述

5、查看表的详细信息

desc ‘表名’

desc 'student'
  • 1

在这里插入图片描述

6、修改表结构

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

(1)修改列族

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

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

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

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

(2)增加列族

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

alter 'student','about'
  • 1

在这里插入图片描述

(3)删除列族

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

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

在这里插入图片描述
注意

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

7、验证表是否存在

命令:exists '表名’

exists 'student'
  • 1

在这里插入图片描述

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

(1)删除表

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

create 't1','info'
  • 1

在这里插入图片描述

然后进行删除

drop 't1'
  • 1

在这里插入图片描述

注意

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

所以在这先禁用此表

disable 't1'
  • 1

在这里插入图片描述

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

drop 't1'
  • 1

在这里插入图片描述

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

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

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

create 't2','info'
  • 1

在这里插入图片描述

清空此表

truncate 't2'
  • 1

在这里插入图片描述

注意

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

四、增删改查命令

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

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

2、查看数据

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

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

get 'student','jack'
  • 1

在这里插入图片描述

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

 get 'student','jack','info'
  • 1

在这里插入图片描述

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

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

在这里插入图片描述

3、查看表中数据总条数

命令:count ‘表名’

统计指定表中的数据总数

count 'student'
  • 1

在这里插入图片描述

4、扫描表中的数据

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

scan 'student'
  • 1

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

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

5、删除数据

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

注意

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

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

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

在这里插入图片描述

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

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

在这里插入图片描述

注意

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

deleteall 'student','jack'
  • 1
  • 2
  • 3

在这里插入图片描述

五、HBase的namespace(命名空间)

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

1、查看命名空间

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

list_namespace
  • 1

在这里插入图片描述

2、新建命名空间

可以选择创建一个新的namespace

create_namespace 'n1'
  • 1

在这里插入图片描述

3、创建表指定命名空间

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

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

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

list
  • 1

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

list_namespace_tables 'n1'
  • 1

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/276659
推荐阅读
相关标签
  

闽ICP备14008679号