HBase shell的基本用法
hbase提供了一个shell的终端给用户交互
通过执行 help get 可以看到命令的帮助信息。
一、一般操作
说明:表名,列族名以及列名都要用 单引号扩起来
1、进入hbase shell
如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入
[root@s89 ~]# hbase shell
2、查询服务器状态
hbase(main):001:0> status
1个活跃的 master
1个备份的master
3个服务
0个挂掉的节点
平均加载时间是0.6667秒
3、查看hbase的版本
hbase(main):002:0> version
4、whoami命令可查看当前用户
5、获取帮助命令
help "COMMAND"【获取一个具体的命令的帮助信息】
help "COMMAND_GROUP" 【获取一组命令的帮助信息】
二、DDL操作
1、创建表
hbase(main):003:0> create 'member','member_id','address','info'
说明:操作不以分号结尾
一个列族中只有一个列时,这个列族就是列
或者:
hbase(main):076:0> create 't1',{NAME => 'f1', VERSIONS => 2},{NAME => 'f2', VERSIONS => 2}
2、列出hbase中所有的表
3、查看表结构
hbase(main):005:0> describe 'member'
4、删除一个列族 ,alter,disable,enable
我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
hbase(main):007:0> alter 'member',{NAME => 'member_id',METHOD=>'delete'}
说明:
没有返回结果,说明没有删除列族成功,
因为,删除列族的时候,要先把表关了,然后再删除【对于TDH来说需要先关表然后删除表中的列族】
hbase(main):003:0> disable 'member' 关表
hbase(main):004:0> alter 'member',{NAME=>'member_id',METHOD=>'delete'}
hbase(main):007:0> enable 'member' //开启表
5、删除一个表(先要对表 disable了)drop
6、判断表是否存在
hbase(main):013:0> exists 'opc'
hbase(main):013:0> exists 'member'
7、判断表是否开启着
hbase(main):015:0> is_enabled 'member'
8、判断表是否关闭着
hbase(main):016:0> is_disabled 'member'
三、DML操作
1、插入数据(一个单元格一个单元格的往里插入数据)
put '表名','行键','列族名:列名','值'
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'
put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'
put'member','xiaofeng','address','aaaaaaa'
列族下面既可以 有列,也可以直接有值,也可以 既有列又直接有值,二者共存
2、获取一条数据
获取一个 row_key 的所有数据
get '表名','行键'
hbase(main):030:0> get 'member','scutshuxue'
获取一个 row_key ,一个列族的所有数据
get '表名','行键' ,'列族名'
hbase(main):031:0> get 'member','scutshuxue','info'
获取一个 row_key ,一个列族下的一个列 的所有数据
get '表名','行键' ,'列族名:列名'
hbase(main):032:0> get 'member','scutshuxue','info:age'
3、更新一条记录
把scutshuxue 的年龄改成 99
hbase(main):033:0> get 'member','scutshuxue','info:age' //改之前的数据
hbase(main):034:0> put 'member','scutshuxue','info:age' ,'99'
说明:先表,后行键,然后是 列族再次是列
更新单元格中的记录就是直接给这个单元格中从新插入一条数据,
自动会把之前的数据先删除了,然后再插入
4、通过timestamp 来获取指定版本的数据
hbase(main):037:0> get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1487148453191}
说明:timestamp 也可以是表中的数据,我们可以通过timestamp来过滤数据,这里的timestamp是操作这条记录的时间戳
5、全表扫描
hbase(main):038:0> scan 'member'
6、删除记录数据
a、删除 row_key 是 temp 的记录
hbase(main):041:0> delete 'member','temp','info:age'
b、删除整行数据(指定row_key)
hbase(main):044:0> deleteall 'member','xiaofeng'
7、查看表中有多少行
hbase(main):046:0> count 'member'
8、
hbase(main):047:0> incr 'member','xiaofeng','info:age'
hbase(main):048:0> get 'member','xiaofeng','info:age'
9、清空表
hbase(main):053:0> truncate 'member'
说明:从打印的日志可以看出,清空表 其实就是
先关表
然后删表
然后重新创建表
权限管理
1)查看权限