HBase 是Hadoop的一个子项目,HBase采用了Google BigTable的稀疏的,面向列的数据库实现方式的理论,建立在hadoop的hdfs上,一方面里用了hdfs的高可靠性和可伸缩行,另外一方面里用 了BigTable的高效数据组织形式.可以说HBase为海量数据的real-time相应提供了很好的一个开源解决方案。
HBase提供了一个类似于mysql等关系型数据库的hbase shell,通过该hbase shell可以对HBase的内的相关表、列族等进行操作;HBase shell的help命令比较详细的列介绍了HBase所支持的命令.具体使用方法可以参见其API文档。
在这里简单举个学生表scores的案例进行讲解,表数据如下:\
name grad course:math course:english``Tom 1 89 97``Jerry 2 100 90 |
|---|
这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成:math和english,当然我们可以根据我们的需要在course中建立更多的列族,如computer,physics,art等相应的列添加入course列族中。
下面列出常使用的hbase shell 命令如下:
| 名称 | 命令表达式 |
|---|---|
| 创建表 | create '表名称', '列名称1','列名称2','列名称N' |
| 添加记录 | put '表名称', '行名称', '列名称:', '值' |
| 查看记录 | get '表名称', '行名称' |
| 查看表中的记录总数 | count '表名称' |
| 删除记录 | delete '表名' ,'行名称' , '列名称' |
| 删除一张表 | 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' |
| 查看所有记录 | scan "表名称" |
| 查看某个表某个列中所有数据 | scan "表名称" , ['列名称:'] |
| 更新记录 | 就是重写一遍进行覆盖 |
\
1、建立一个表格 scores 具有两个列族grad 和courese案例如下:
hbase(main):002:0> create 'scores', 'grade', 'course'``0 row(s) in 4.1610 seconds |
|---|
2、查看当先HBase中具有哪些表
hbase(main):003:0> list``scores``1 row(s) in 0.0210 seconds |
|---|
3、查看表的构造
hbase(main):004:0> describe 'scores'``{NAME => 'scores', IS_ROOT => 'false', IS_META => 'false', FAMILIES => [{NAME => 'course', BLOOMFILTER => 'false', IN_MEMORY => 'false', LENGTH => '2147483647', BLOCKCACHE => 'false', VERSIONS => '3', TTL => '-1', COMPRESSION => 'NONE'}, {NAME => 'grade', BLOOMFILTER => 'false', IN_MEMORY => 'false', LENGTH => '2147483647', BLOCKCACHE => 'false', VERSIONS => '3', TTL => '-1', COMPRESSION => 'NONE'}]}``1 row(s) in 0.0130 seconds |
|---|
4、 加入一行数据,行名称为 Tom 列族grad的列名为”” 值位1
hbase(main):005:0> put 'scores', 'Tom', 'grade:', '1'``0 row(s) in 0.0070 seconds |
|---|
5、给Tom这一行的数据的列族添加一列 <math,89>
hbase(main):006:0> put 'scores', 'Tom', 'course:math', '89'``0 row(s) in 0.0040 seconds |
|---|
6、给Tom这一行的数据的列族添加一列 <english,97>
hbase(main):007:0> put 'scores', 'Tom', 'course:english', '97'``0 row(s) in 0.0030 seconds |
|---|
\
7、 加入一行数据,行名称为 Jerry 列族grad的列名为”” 值位2
hbase(main): 008 : 0 > put 'scores' , 'Jerry' , 'grade:' , '2'``0 row(s) in 0.0040 seconds |
|---|
8、给Jerry这一行的数据的列族添加一列 <math,100>
hbase(main):009:0> put 'scores', 'Jerry', 'course:math', '100'``0 row(s) in 0.0030 seconds |
|---|
\
9、给Jerry这一行的数据的列族添加一列 <english,90>
hbase(main):010:0> put 'scores', 'Jerry', 'course:english', '90'``0 row(s) in 0.0050 seconds |
|---|
10、查看scores表中Tom的相关数据
hbase(main):011:0> get 'scores', 'Tom'``COLUMN CELL`` course:english timestamp=1224726394286, value=97`` course:math timestamp=1224726377027, value=89`` grade: timestamp=1224726360727, value=1``3 row(s) in 0.0070 seconds |
|---|
\
\
11、判断表是否enable
hbase(main):012:0>is_enabled 'scores'``true``0 row(s) in 0.0110seconds |
|---|
12、判断表是否disable
hbase(main):013:0>is_disabled 'scores'``false``0 row(s) in 0.0110seconds |
|---|
13、删除表scores\
hbase(main):014:0>disable 'scores'``0 row(s) in 2.0590seconds hbase(main):030:0>drop 'scores'``0 row(s) in 1.1070seconds |
|---|
\
14、查询表是否存在
hbase(main):015:0>exists 'scores'``Table scores doesexist ``0 row(s) in 0.1610seconds |
|---|
\
15、查看scores表中所有数据\
hbase(main):016:0> scan 'scores'``ROW COLUMN+CELL`` Tom column=course:english, timestamp=1224726394286, value=97`` Tom column=course:math, timestamp=1224726377027, value=89`` Tom column=grade:, timestamp=1224726360727, value=1`` Jerry column=course:english, timestamp=1224726424967, value=90`` Jerry column=course:math, timestamp=1224726416145, value=100`` Jerry column=grade:, timestamp=1224726404965, value=2``6 row(s) in 0.0410 seconds |
|---|
16、查看scores表中所有数据courses列族的所有数据
hbase(main):017:0> scan 'scores', ['course:']
ROW COLUMN+CELL
Tom column=course:english, timestamp=1224726394286, value=97
Tom column=course:math, timestamp=1224726377027, value=89
Jerry column=course:english, timestamp=1224726424967, value=90
Jerry column=course:math, timestamp=1224726416145, value=100
` 4 row(s) in 0.0200 seconds
转载地址:blog.yoodb.com/yoodb/artic… `