1、进入hbase命令行界面
$HBASE_HOME/bin/hbase shell
2、查看当前用户
hbase(main):001:0> whoami
3、表的管理
(1)查看所有表
hbase(main):002:0> list
(2)创建表
语法:create <table> , {NAME => <family>, VERSIONS => <VERSIONS>}
例子:创建表 table1 且列族family分别是:family1,family2,且版本书均为3
create 'table1',{NAME=>'family1',VERSIONS=>3},{NAME=>'family2',VERSIONS=>3}
(3)删除表
删除表要分两步,第一步先disable,然后drop
例子:删除表table1
hbase(main):005:0> disable 'table1'
0 row(s) in 2.2930 seconds
hbase(main):006:0> drop 'table1'
0 row(s) in 1.2810 seconds
(4)查看表的结构
语法:describe <table>
describe 'table1'
(5)修改表的结构
语法:alter 'table1',{NAME=>'family1'},{NAME=>'family2',METHOD=>'delete'}
例子:修改表table1的列族cf的TTL为180天
#修改表结构前必须先disable表
hbase(main):013:0> disable 'table1'
hbase(main):015:0> alter 'table1',{NAME=>'family1',TTL=>'15552000'},{NAME=>'family2',TTL=>'15552000'}
hbase(main):016:0> enable 'table1'
4、权限管理
(1)分配权限
# 语法 : grant <user> <permissions> <table> <column family> <column qualifier> 参数后面用逗号分隔
# 权限用五个字母表示: "RWXCA".
# READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')
# 例如,给用户‘user1'分配对表table1有读写的权限
hbase(main)>grant 'user1','RW','table1'
(2)查看权限
# 语法:user_permission <table>
# 例如,查看表ttabe1的权限列表
user_permission 'table1'
(3)收回权限
# 与分配权限类似,语法:revoke <user> <table> <column family> <column qualifier>
# 例如,收回user1用户在表table1上的权限
hbase(main)> revoke 'user1','table1'
4、数据的操作
(1)增加数据
# 语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>
# 例如:给表student的添加一行记录:rowkey是1001,family name:info,column name:name,value:Thomas', timestamp:系统默认
hbase(main) > put 'student','1001','info:name','Thomas'
(2)查询数据
(a)查询某行数据
#语法:get <table>,<rowkey>,[<family:column>,......]
#例子:查询students表rowkey为10001,列族是info,列名为name
hbase(main)> get 'student','1001', 'info:name'
# 或者:
hbase(main)> get 'student','1001', {COLUMN=>'info:name'}
(b)扫描表
# 语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num}
# 另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能
# 例如:扫描表student的前5条数据;扫描student从rowkey=1001
hbase(main) > scan 'student',{LIMIT=>5}
hbase(main) > scan 'student',{STARTROW => '1001', STOPROW => '1001'}
hbase(main) > scan 'student',{STARTROW => '1001'}
FILTER过滤器
在hbase shell用show_filters命令查看一下可以用什么Filter
hbase(main):007:0> show_filters
ColumnPrefixFilter
TimestampsFilter
PageFilter
MultipleColumnPrefixFilter
FamilyFilter
ColumnPaginationFilter
SingleColumnValueFilter
RowFilter
QualifierFilter
ColumnRangeFilter
ValueFilter
PrefixFilter
SingleColumnValueExcludeFilter
ColumnCountGetFilter
InclusiveStopFilter
DependentColumnFilter
FirstKeyOnlyFilter
KeyOnlyFilter
语法:scan <table>,{FILTER=>"(<FilterName>(<value>))"}
例子:扫描student表只查询列名是na开头的前5条记录
scan 'student',{LIMIT=>5,FILTER=>"(ColumnPrefixFilter('na'))"}
(3)删除数据
# 语法:deleteall <table>, <rowkey>, <family:column> , <timestamp>,可以不指定列名,删除整行数据
# 例如:删除表student,1001的数据;删除student表某些rowkey的某一列数据;
hbase(main)> deleteall 'student','1001'
hbase(main)> delete 'student','1002','info:sex'
清空表中所有数据
hbase(main)> truncate 'student'
(4)统计表数据行数
# 语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum}
# INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该 参数可提高查询速度
# 例如,查询表student中的行数,每100条显示一次,缓存区为500
hbase(main)> count 'student',{INTERVAL=>100,CACHE=>500}