Hbase提供了Shell的方式来操作数据库,下面通过示例来演示常见的Shell操作
[warning] 实验环境:
- 启动Hbase集群(确保进程数都是够的,服务没问题再进行实验)
- 在bigdata1的服务器进行实操
[info] (1)连接Hbase
hbase shell
:-:
[info] (2)查看帮助信息
help
:-:
[info] (3)创建一个表,必须要指定表名称和列簇名
# 1.创建一个学生表
create 'student','name','age','sex'
# 2.创建一个自定义版本的表
# 表名 people
# 列族info,版本管理为3(最多保存3个历史版本)
# 列族data,版本管理为1(最多保存1个历史版本)
create 'people',{NAME=>'info',VERSIONS=>3},{NAME=>'data',VERSIONS=>1}
[info] (4)查看表
# 1.查看所有表
list
# 2.查看刚创建的 people 表
list 'people'
# 3.describe命令查看“student”表的基本信息
describe 'student'
# 4.describe命令查看“people”表的基本信息
[info] (5)插入数据
# 在people表中插入1条记录
put 'people','rk001','info:name','liuyw'
put 'people','rk001','info:gender','female'
put 'people','rk001','info:age','18'
put 'people','rk001','data:hobby','manyplay'
# 命令解释
rk001为主键,一个主键记录一条数据,所以以上命令只插入了一条记录
# 注意
一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据
所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。
[info] (6)查看数据(HBase中有两个用于查看数据的命令)
# 1.scan 命令,用于查看某个表的全部数据
scan 'people'
# 2.get 命令,用于查看表的某一行数据,获取people表的主键为:rk001的单行数据
get 'people','rk001'
[info] (7)条件查询
# 1.查询列族数据
scan 'people',{COLUMNS=>'info'}
# 2.查询people表中列族为info和data且列标识符含有a字符的信息
scan 'people',{COLUMNS=>['info','data'],FILTER=>"(QualifierFilter(=,'substring:a'))"}
# 3.查询people表中列族为info,rk范围是[rk001,rk003)的数据
scan 'people',{COLUMNS=>'info',STARTROW=>'rk001',ENDROW=>'rk003'}
[info] (8)修改数据
# 1.将表:people的行键为rk001的age修改为30
put 'people','rk001','info:age','30'
# 2.如上图修改后,只返回最新的一个版本age数据,现需要查询3个版本的age数据
get 'people','rk001',{COLUMN=>'info:age',VERSIONS=>3}
[info] (9)删除数据
1. deleteall 操作用于删除一行数据;
2. delete 操作用于删除一个数据,是put的反向操作;
3. truncate 'student' 用于删除student 表的所有数据;
# 1.在 people 表再插入一行数据
put 'people','rk002','info:name','tom'
put 'people','rk002','info:gender','female'
put 'people','rk002','info:age','18'
put 'people','rk002','data:hobby','manyplay'
# 2.删除行键为rk001的一行数据
deleteall 'people','rk001'
# 3.删除行健rk002的age信息
delete 'people','rk002','info:age'
# 4.清空 people 表的所有数据
truncate 'people'
[info] (10)删除表
#删除表有两步:
#第一步先让该表不可用(enable/disable : 使表有效或无效)
disable 'people'
#第二步删除表:
drop 'people'
[info] (9)退出shell,使用quit
quit
内容来源于网络,如有侵权,请联系作者删除!