首次使用hbase的常规操作

阅读文本,你将会知道如何在hbase中创建一张表,如何在表中插入数据,如何通过put和scan命令查询数据,启用和禁用表,启动和停止hbase。

连接Hbase

使用hbase shell命令连接正在运行的Hbase实例,该命令位于hbase安装的./bin目录下。

1
2
$ hbase shell
hbase(main):001:0>

显示hbase帮助文本

在命令行中输入help,然后按回车键;会显示一些关于hbase shell的基本使用信息,和一些命令示例。需要注意的是,hbase的表名、行键、列族都必须使用单引号括起来。

创建一张表

使用create命令创建一张新的表,你必须具体指定表名和列族名。

1
create 'user','info'

当然你也可以指定多个列族

1
2
3
create 'user','info','data'
## 或者
create 'user',{NAME => 'info', VERSIONS => '3'},{NAME => 'data'}

列出表信息

使用list命令确认表是否存在。

1
list 'test'

使用describe命令查看包含默认配置的详细信息

1
describe 'test'

插入数据

1
2
3
4
put 'user','rk001','info:name','zhangsan'
put 'user','rk001','info:gender','female'
put 'user','rk001','info:age',20
put 'user','rk001','data:pic','picture'

在hbase中的列的组成包括: 列族前缀、冒号(:)、限定符 组成。

查询数据

get查询

通过rowkey进行查询

1
get 'user','rk001'

查看rowkey下面的某个列族的信息

1
get 'user','rk001','info'

查看rowkey指定列族指定字段的值

1
get 'user','rk001','info:name','info:age'

查看rowkey指定多个列族的信息

1
get 'user','rk001','info','data'

或者

1
get 'user','rk001',{COLUMN => ['info','data']}

或者

1
get 'user','rk001',{COLUMN => ['info:name','data:pic']}

指定rowkey与列值查询

1
get 'user','rk001',{FILTER => "ValueFilter(=, 'binary:zhangsan')"}

指定rowkey与列值模糊查询

1
get 'user','rk001',{FILTER => "(QualifierFilter(=,'substring:a'))"}

继续插入一批数据

1
2
3
4
put 'user', 'rk0002', 'info:name', 'fanbingbing'
put 'user', 'rk0002', 'info:gender', 'female'
put 'user', 'rk0002', 'info:nationality', '中国'
get 'user', 'rk0002', {FILTER => "ValueFilter(=, 'binary:中国')"}

scan查询

查询所有数据

1
scan 'user'

列族查询

1
2
3
scan 'user', {COLUMNS => 'info'}
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 5}
scan 'user', {COLUMNS => 'info', RAW => true, VERSIONS => 3}

多列族查询

1
2
scan 'user', {COLUMNS => ['info', 'data']}
scan 'user', {COLUMNS => ['info:name', 'data:pic']}

指定列族与某个列名查询

1
scan 'user',{COLUMN => 'info:name'}

指定列族与列名以及限定版本查询

1
scan 'user', {COLUMNS => 'info:name', VERSIONS => 5}

指定多个列族与按照数据值模糊查询

1
scan 'user', {COLUMNS => ['info', 'data'], FILTER => "(QualifierFilter(=,'substring:a'))"}

rowkey的范围查询

1
scan 'user', {COLUMNS => 'info', STARTROW => 'rk0001', ENDROW => 'rk0003'}

指定rowkey模糊查询

1
scan 'user',{FILTER => "PrefixFilter('rk')"}

指定数据范围值查询

1
scan 'user', {TIMERANGE => [1392368783980, 1392380169184]}

更新数据

更新数据值

更新数据和插入数据操作一摸一样,只不过有数据就更新,没数据就添加

更新版本号

1
alter 'user',NAME => 'info', VERSIONS => 5

删除数据以及删除表操作

指定rowkey以及列名进行删除

1
delete 'user','rk001','info:name'

指定rowkey,列名以及字段值进行删除

1
delete 'user','rk001','info:name',1392383705316

删除一个列族

1
alter 'user',NAME => 'info',METHOE => 'delete'

或者

1
alter 'user','delete' => 'info'

清空表数据

1
truncate 'user'

删除表

首先需要让该表disable状态,使用命令

1
disable 'user'

然后才能drop这个表,使用命令:

1
drop 'user'

注意:如果直接drop表,会报错:Drop the named table. Table must first be disabled

统计一张表有多少行数据

1
count 'user'

高级shell管理命令

status

显示服务器状态

1
status 'node01'

whoami

显示hbase当前用户

1
whoami

list

显示当前所有的表

count

统计指定表的记录数

1
count 'user'

describe

展示表结构信息

exists

检查表是否存在,适用于表量特别多的情况

is_enabled、is_disabled

检查表是否启用或者禁用

alter

该命令可以改变表和列族的模式

为当前表增加列族

1
alter 'user',NAME => 'cf2', VERSIONS => 2

为当前表删除列族

1
alter 'user','delete','delete'=>'CF2'

disabled/enable

禁用一张表/启用一张表

drop

删除一张表,记得在删除表之前必须先禁用

truncate

禁用表-删除表-创建表

退出hbase shell

要退出hbase shell和从集群中断开连接。

1
quit

停止Hbase

1
2
$ ./bin/stop-hbase.sh
stopping hbase.........

停止hbase需要花费数分钟的时间,可以通过jps方式来查看HMaster和HRegionServer进程是否停掉。

参考资料

Apache HBase ™ Reference Guide

-------------本文结束感谢您的阅读-------------

本文标题:首次使用hbase的常规操作

文章作者:Mr.wj

发布时间:2020年01月13日 - 21:05

最后更新:2020年01月13日 - 21:12

原始链接:https://www.wjqixige.cn/2020/01/13/首次使用hbase的常规操作/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Mr.wj wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!