HBase的shell命令行操作
一、 启动shell外壳
hbase shell
有jar包冲突。hadoop的jar和hbase的jar冲突,删除其中一个(删除hbase的):
rm -rf /usr/hbase/hbase-1.2.1/lib/slf4j-log4j12-1.7.5.jar
再次启动shell:
二、 Help查看命令
三、 执行status
四、 执行version
五、 执行whoami
六、 执行list
执行list命令,查看hbase中所有的表。
只有一张默认的表table
七、 创建表
创建一张test表,只包含一个data列
create 'test' , 'data'
Web页面:
八、 解决hbase shell命令下不能使用Backspace键
九、 加入数据
在data列族中三个不同的行和列上插入数据
put 'test' , 'row1' ,'data:1' , 'value1'
十、 读取数据
Hbase有两种数据读取方式:get和scan。
1. get方式
读取一行的数据信息
get命令:get 'test' , 'row1'
2. scan方式
读取表中所有行的数据信息。
scan命令:scan 'test'
十一、 删除表
1、 先将需要删除的表设为禁用disable
命令:disable 'test'
2、 将表删除drop
命令:drop 'test'
3、 查看是否删除成功
test表已经删除。
十二、 创建表(指定族名)
表模型:
建表语句:
create 'user_info',{NAME => 'base_info' , VERSIONS =>3},{NAME => 'extra_info' , VERSIONS => 1}
十三、 添加数据
插入第一行数据,自定义行号rowkey为rk0001
put 'user_info','rk00001','base_info:id','1'
put 'user_info','rk00001','base_info:name','haha'
put 'user_info','rk00001','base_info:age','18'
put 'user_info','rk00001','base_info:sex','male'
put 'user_info','rk00001','extra_info:addr','beijing'
put 'user_info','rk00001','extra_info:salary','18.0'
插入其他行:
十四、 查询数据
1. scan查询
scan 'user_info'
2. get查询
get 'user_info', 'rk00001'
get'user_info','rk00001','base_info:name'
测试版本号:
将rk00001的base_info下name改两次,总共三个版本,再次查询:
显示最新版本。
再次更改,版本变为4
查询所有版本:
get 'user_info' , 'rk00003',{COLUMN =>'base_info:name', VERSIONS => 10}
只显示了最新的三个版本信息。
十五、 删除表
先弃用disable ‘user_info’
再删除 drop ‘user_info’。
十六、 创建名称空间namespace
Hbase名称空间namespace相当于关系型数据库的库,namespace下存放有表table
默认create创建的表都在default
创建名称空间:
create_namespace 'user'
在指定名称空间下建表(表配置默认):
create 'user:user_info' ,'base_info'
添加数据:
查询:
删除表:
删除表空间:
需要先删除namespace下所有的表,才能删除namespace
十七、 练习表操作
创建:
create 'user',{NAME => 'info',VERSIONS => 3},{NAME=> 'data',VERSIONS => 1}
插入数据:
put 'user', 'rk0001', 'info:name', 'zhangsan'
put 'user', 'rk0001', 'info:gender', 'female'
put 'user', 'rk0001', 'info:age', 20
put 'user', 'rk0001', 'data:pic', 'picture'
put 'user', 'rk0002', 'info:name', 'fanbingbing'
put 'user', 'rk0002', 'info:gender', 'female'
put 'user', 'rk0002', 'info:nationality', '中国'
查询:
1. 查询rk0001行的所有数据
get 'user','rk0001'
2. 查询rk0001行info列族下的数据
get 'user','rk0001','info'
3. 查询rk0001行info列族中name和age两cell数据
get 'user','rk0001','info:name','info:age'
4. 查询rk0001行下info、data两个列族的信息
get 'user','rk0001','info','data'
5. 查询rk0001行下info、data两个列族的信息
get 'user','rk0001',{COLUMN => ['info','data']}
6. 查询rk0001行下info列族name和data列族pic的信息
get 'user', 'rk0001', {COLUMN =>['info:name', 'data:pic']}
7. 查询user表中row key为rk0001,列标示符中含有a的信息
8. 查询user表中row key为rk0002,value值中含有’中国’的信息
get 'user', 'rk0002', {FILTER =>"ValueFilter(=, 'binary:中国')"}
9. scan类似.
删除数据:
delete 'user', 'rk0001', 'info:name'
清空表:
truncate'user'