HBase Shell 操作

1、基本操作

1.1、进入HBase客户端命令行

前提是先启动hadoop集群和zookeeper集群。

复制代码
bin/hbase shell

1.2、查看帮助命令

复制代码
help

help 查看指定命令的语法规则

查看 list_namespace 的用法('记得加单引号')

bash 复制代码
help 'list_namespace'

2、namespace

我们首先查看现在有哪些命名空间 ,使用指令:list_namespace

注意:我的hadoop版本3.3.0,HBase2.4.17,两者兼容性有问题,我们直接使用上面的命令会报错,需要做两点:

  1. 确保 hadoop 退出安全模式
XML 复制代码
hadoop dfsadmin -safemode leave
  1. 在hbase-site.xml 中添加下面的配置
XML 复制代码
<property>
    <name>hbase.wal.provider</name>
    <value>filesystem</value>
</property>

执行语句 list_namespace

2.1、创建命名空间

通过 help 查看创建命名空间的用法:

我们可以看到,我们可以通过两种方式创建 namespace。

创建命名空间 bigdata

3、DDL

3.1、查看表格

bash 复制代码
list

3.2、创建表格

案例1

在我们的命名空间 bigdata 下创建一个表格 student 并指定两个列族 info 和 msg

如果不指定命名空间的话也可以,这时候使用的是HBase默认的 default 命名空间。

不指定版本空间的话默认版本空间是1,后续可以修改。

bash 复制代码
create 'bigdata:student','info','msg'

去web端查看:

案例2

同样在命名空间 bigdata 下再创建一个表 person ,指定两个列族 info 和 msg 并指定保留5个历史版本。

每次修改都会将新值追加到版本列表中,同时删除旧版本,以保持每个单元格的版本数不超过创建时指定的值。

bash 复制代码
create 'bigdata:person',{NAME => 'info',VERSIONS => 5},{NAME => 'msg',VERSIONS => 5}

3.3、查看表的详细信息

bash 复制代码
describe '命名空间:表名'

3.4、修改表

我们在创建表的时候指定的所有列族相关的信息,都可以后续通过 alter 进行修改,包括增加删除列族,这也是为什么说 HBase 是稀疏的,因为这些列族都是可以后续我们一直增加修改的,包括列族下的列,我们到现在还没有创建真正的列,需要的时候再去创建。

3.4.1、增加列族和修改列族

修改列族版本空间

bash 复制代码
alter 'bigdata:student',NAME => 'info',VERSIONS => 5

增加列族 'info1'

bash 复制代码
alter 'bigdata:student',NAME => 'info1',VERSIONS => 5

3.4.2、删除列族

两种删除方法:

bash 复制代码
alter '命名空间:表名',NAME => '列族',METHOD => 'delete'

或者

bash 复制代码
alter '命名空间:表名','delete' => '列族'

命名空间为 default 命名空间可以省去不写,下面都是如此。

3.5、删除表

HBase中删除表格时必须先标记为 Disable 不可用的,才能再删除。

3.5.1、disable

bash 复制代码
disable '命名空间:表名'

3.5.2、drop

bash 复制代码
drop '命名空间:表名'

4、DML

4.1、写入数据

HBase中写入的数据只能是结构中最底层的 cell (由{rowkey, column Family : column Qualifier, timestamp} 唯一确定的单元)。

学会多用 help 去查看用法:

语法:

bash 复制代码
put '命名空间:表名','行号','列族:列名','值'

其中的行号和列名都是新增数据的时候才增加的,我们在创建表的时候并不需要定义,再次体现了NoSQL数据库的稀疏性。

4.2、读取数据

4.2.1、get

读取某一行的数据

bash 复制代码
get '命名空间:表名','行号'

也可以进行列的过滤:

bash 复制代码
get '命名空间:表名','行号',{COLUMN => '列族:列名'}

限定多列:

bash 复制代码
get '命名空间:表名','行号',{COLUMN => ['列族:列名','列族:列名','列族:列名'...]}

读取多个版本:比如读取6个版本的历史数据(注意:我们读取到的版本数不会操作它维护的版本数,即我们定义时设置的版本数)

bash 复制代码
get '命名空间:表名','行号',{COLUMN => '列族:列名',VERSIONS => 6}

4.2.2、scan

扫描整张表

get 只能读取一行数据,我们希望读取多行数据的话就要使用scan了,scan的时候默认读取的是我们最新的版本。

bash 复制代码
scan '命名空间:表名'
扫描指定范围

通过指定开始和结束行号来输出指定范围的数据,所以说在HBase中,行号的设计很重要。

注意:STARTROW 到 STOPROW 是左闭右开的

bash 复制代码
scan '命名空间:表名',{STARTROW => '行号',STOPROW => '行号'}

4.3、删除数据

删除数据有两个方法:deletedeleteall ,前者是删除一个版本的数据,后者是删除所有版本的数据。

4.3.1、delete

delete 默认删除最新的一个版本。

bash 复制代码
delete '命名空间:表名','列族:列名'

4.3.2、deleteall

bash 复制代码
deleteall '命名空间:表名','列族:列名'
相关推荐
TDengine (老段)6 分钟前
TDengine 数学函数 FLOOR 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
大气层煮月亮44 分钟前
Oracle EBS ERP开发——报表生成Excel标准模板设计
数据库·oracle·excel
云和数据.ChenGuang1 小时前
达梦数据库的命名空间
数据库·oracle
三三木木七2 小时前
mysql拒绝连接
数据库·mysql
蹦跶的小羊羔2 小时前
sql数据库语法
数据库·sql
唐古乌梁海2 小时前
【mysql】InnoDB的聚簇索引和非聚簇索引工作原理
数据库·mysql
我变秃了也没变强2 小时前
pgsql配置密码复杂度策略
数据库·postgresql
PawSQL2 小时前
企业级SQL审核工具PawSQL介绍(1) - 六大核心能力
数据库·sql·oracle
幼稚园的山代王2 小时前
NoSQL介绍
数据库·nosql
猫林老师2 小时前
HarmonyOS线程模型与性能优化实战
数据库·分布式·harmonyos