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简单操作)