Hbase Shell 操作

Posted 梁辰兴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hbase Shell 操作相关的知识,希望对你有一定的参考价值。

文章目录


一,命名空间操作

status 查看点前状态

(1)创建namespace

create_namespace ‘mydb’
create_namespace ‘mydb1’,‘createtime’=>’2021-10-25’

(2)显示namespace

describe_namespace ‘mydb’

(3)修改namespace的createtime属性

alter_namespace ‘mydb1’,METHOD=’set’,‘createtime’=>’2021-12-25’

(4)新增一个namespace的某个属性

alter_namespace ‘mydb1’,METHOD=’set’,‘createtime’=>’2021-12-25’,’author’=>’abc’

(5)删除namespace的某个属性

alter_namespace ‘mydb1’,METHOD=’unset’,NAME=>’createtime’

(6)删除namespace

drop_namespace ‘mydb1’

注:如果有表不能删除
例如:create ‘mydb:mydb1’,’info’

list_namespace_tables ‘mydb’
drop_namespace ‘mydb1’ 提示不能删除

二,表的ddl操作

(一)创建表

(1)创建命名空间在test1的表

create ‘mydb:test1’,NAME=’f1’
list_namespace_tables ‘mydb’ 或者list 显示全部表

(2)创建命名空间在default的表

create ‘test2’,NAME=’f1’
还可以简化create ‘mydb:test3’,’f1’

(3)创建多个列族的表

create ‘mydb:test4’,NAME=’f1’,NAME=’f2’ 也可以
create ‘mydb:test4’,’f1’,’f2’

(二)显示表

describe ‘mydb:test1’ describe ‘mydb:test4’
desc ‘mydb:test1’

(三)修改表

(1)修改表的列族数据维护的版本数

alter ‘mydb:test1’, NAME=>’f1’ ,VERSIONS=>’3’

(2)修改表的多个列族数据维护的版本数

desc ‘mydb:test4’
alter ‘mydb:test4’, NAME=>’f1’ ,VERSIONS=>’3’,NAME=>’f2’ ,VERSIONS=>’4’

(3)新增列族

alter ‘mydb:test4’, NAME=>’f3’,VERSIONS=>’3’

(4)删除列族

alter ‘mydb:test4’, NAME=>’f3’,METHOD=>’delete’
或者alter ‘mydb:test4’, ‘delete’=>’f3’

(四)删除表

输入命令:drop ‘mydb:mytbl’

注:如果报错 说名表的当前状态是enable,那么就需要将表的状态改为disable,执行命令:disable ‘mydb:mytbl’。

再输入:drop ‘mydb:mytbl’ ,成功删除

三,表的DML操作

(一)插入数据

put ‘stu’,’1001’,’info:name’,’zhangsan’
put ‘stu’,’1001’,’info:sex’,’man’
put ‘stu’,’1001’,’info:address,’beijing’

put ‘stu’,’1002’,’info:name’,’lisi’
put ‘stu’,’1002’,’info:sex’,’female’
put ‘stu’,’1002’,’info:address,’shanghai’
put ‘stu’,’1003,’info:name’,’wangwu’
put ‘stu’,’1003’,’info:sex’,’female’
put ‘stu’,’1003’,’info:address,’chengdu’

在加个
put ‘stu’,’1004’,’info:name’,’wangwu’
put ‘stu’,’1004’,’info:sex’,’female’
put ‘stu’,’1004’,’info:address,’chengdu’
put ‘stu’,’1004’,’info:age,’20’

可以制定列查询 get ‘stu’,’1004’,’info:name’

(二)读取数据

(1)get

get 最大范围是一行数据,也可以进行列的过滤,读取数据的结果为多行 cell。

1.读取一行数据:get ‘stu’,’1001’

2.读取指定列:get ‘stu’,’1004’,’info:name’

(2)scan

scan 是扫描数据,能够读取多行数据,不建议扫描过多的数据,推荐使用 startRow 和
stopRow 来控制读取的数据,默认范围左闭右开。

1.读取所有数据

scan 'stu'

2.读取不包含1003 ,写1004

scan ‘stu’,STARTROW=>’1001’,STOPROW=>’1003’

3.怎么查取到临界的值

scan ‘stu’,STARTROW=>’1001’,STOPROW=>’1003!’
scan  ‘stu’

4.按照查看版本读取
scan ‘stu’,RAW=>true,VERSIONS=>5 时间戳越大代表版本越新
desc ‘stu’ 可以看到VERSION=>1 代表显示版本的数量,清理数据的时候保留版本的数量,如果是2 ,就保留2个版本信息1 2 3 4 5,最终保留4 5

(三)删除数据

(1)删除一行数据

Delete ‘stu’,’1001’,’info:name’ 删除最新的版本,原来的版本还在
scan ‘stu’
利用scan ‘stu’,RAW=>true,VERSION=>5

Delete ‘stu’,’1001’,’info:name’,1620887211457
scan ‘stu’
在利用scan ‘stu’,RAW=>true,VERSION=>5 查看
如果要全部真正的删除就的用deleteall命令
先修改1002 ,才能产生多个版本
Put ‘stu’,’1002’,’info:name’,’lixioasi’
scan ‘stu’
deleteall ‘stu’,’1002’,’info:name’
scan ‘stu’ 不在显示name
在利用scan ‘stu’,RAW=>true,VERSION=>5 查看

(2)删除列族数据

deleteall ‘stu’,’1003’,’info’
scan ‘stu’
info数据还有
利用scan ‘stu’,RAW=>true,VERSION=>5查看,在shell里无法删除,存在歧义
但是可以利用api做到。
在利用deleteall ‘stu’,’1004’ 删除整行数据。
scan ‘stu’ 看不到1004 数据了
利用scan ‘stu’,RAW=>true,VERSION=>5

四,Count 统计数据

Count ‘stu’

五,Truncate 清空数据

Truncate ‘stu’ 清空表数据

以上是关于Hbase Shell 操作的主要内容,如果未能解决你的问题,请参考以下文章

HBase学习01(HBase入门及HBase Shell简单操作)

HBase ——Shell操作

HBase高手之路4-Shell操作

Hbase的常用的shell命令&Hbase的DDL操作&Hbase的DML操作

Hbase shell操作总结

HBase Shell操作命令