本内容整理了部分常用命令、以及实验案例。Hbase有大量命令,此处只列举出部分。更多使用案例和方法,list
命令已经有很好的支持。
目录
进入Hbase shell
进入命令
1 | ➜ hbase-1.2.4 bin/hbase shell |
help 帮助命令
1 | hbase(main):001:0> help |
get 查看单独的某个命令的帮助
1 | hbase(main):001:0> help 'get' |
一般命令
status 查看状态
1 | hbase(main):002:0> status |
version 查看版本
1 | hbase(main):003:0> version |
whoami 显示当前的Hbase用户
1 | hbase(main):004:0> whoami |
DDL(数据定义语言Data Definition Language)命令
作用在Hbase表(元信息)上的命令,主要包括下列命令:
create 创建表 create 't1', 'f1', 'f2', 'f3'
1 | # 创建blog表,该表有两个列族:‘article’和‘author’ |
list 列出所有表
list ‘abc.*’ #显示abc开头的表
1 | hbase(main):005:0> list |
desc 获得表的描述
1 | hbase(main):009:0> describe 'employee' |
alter 增加列簇、删除列簇
1 | # 更改或添加t1表中的f1列簇,以保持最多5个单元格的VERSIONS |
删除表
1 |
|
exists 查询表是否存在
1 | hbase(main):012:0> exists 'employee' |
is_enabled 验证表是否enabled
1 | hbase(main):015:0> is_enabled 'employee' |
更改表名
1 | 需要开启快照功能,在hbase-site.xml文件中添加如下配置项: |
disable_all 下线匹配到的数据表
1 | disable_all 't.*' |
is_disabled 表是否可用
1 | hbase(main):017:0> is_disabled 'employee' |
DML(data manipulation language)操作
作用在数据上的命令,主要包括:
put 插入 put 't1', 'r1', 'c1', 'value'
1 | put 'blog','blog1','article:title','mapreduce' |
get 获取一条数据 t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}
1 | hbase(main):043:0> get 'blog','blog2',{COLUMN=>['author:name','author:age']} |
put 更新一条记录
1 | put 'blog','blog1','author:age','40' |
delete 删除记录
1 | delete 'blog','blog3','article:tag' |
scan 全表扫描
- 限制展示某些列
1 | scan ‘t1’,{COLUMNS=>’cf’} |
- 限制查找行数
1 | scan ‘t1’,{COLUMNS=>[‘cf1’,’cf2’],LIMIT=>2} |
- 限制时间范围
1 | scan ‘t1’,{TIMERANGE=>[1448045892646,1448045892647]} |
- PrefixFilter:rowKey前缀过滤
1 | scan 'blog’,{FILTER=>PrefixFilter(‘blog’)} |
- QualifierFilter:列过滤器,QualifierFilter对列的名称进行过滤,而不是列的值。
1 | scan ‘blog’,{FILTER=>”PrefixFilter(‘t’) AND QualifierFilter(>=,’binary:b’)”} |
- TimestampsFilter:时间戳过滤器
1 | scan ‘qy’,{FILTER=>”TimestampsFilter(1448069941270,1548069941230)” } |
- count 返回Hbase表中总的记录数
1 | INTERVAL: 每隔多少行显示一次count,默认是1000 |
- truncate 清空表
1 | HBase是先将表disable,再drop the table,最后creating table。 |
练习
- 建表:表名blog,有两个列族:‘article’和‘author’
1 | create 'blog','article','author' |
- 插⼊数据到表blog中,数据如上图
1 | put 'blog','blog1','article:title','mapreduce' |
- 读出rowkey为“blog2”的author的name和age
1 | get 'blog','blog2',{COLUMN=>['author:name','author:age']} |
- 读出所有article的title
1 | scan 'blog',{COLUMNS=>['article:title']} |
- 更新“blog1”作者的age为40
1 | put 'blog','blog1','author:age','40' |
- 读出rowkey为“blog1”中author的name和age
1 | get 'blog','blog1',{COLUMN=>['author:name','author:age']} |
- 删除rowkey为“blog3”中article的tag
1 | delete 'blog','blog3','article:tag' |
- 读出所有article的title和tag,同时读出所有author的name
1 | scan 'blog',{COLUMNS=>['article:title','article:tag','author:name']} |
参考文档
文档一: https://learnhbase.net/2013/03/02/hbase-shell-commands/