一 .这里用一个学生成绩表作为例子,对HBase的基本操作和基本概念进行讲解。下面是学生的成绩表结构。
name grad course:math course:art Tom 1 87 97 Jerry 2 100 80
这里grad对于表来说是一个列,course对于表来说是一个列族,这个列族由两个列组成:math和art,当然可以根据需要在course中建立更多的列族,如computer、physics等。
有了上面的想法和需求,就可以在HBase中建立相应的数据表了。
二. Shell的基本操作
HBase提供了一个Shell的终端供用户交互。使用命令HBase Shell进入命令界面。对Shell命令行基本功能的理解有助于编写更好的Shell程序,在执行Shell命令时,多个命令可以在一个命令行上运行,但此时要使用分号(;)分隔命令。
[root@localhost root]# ls a* -l;free;df
长Shell命令行可以使用反斜线字符(\)在命令行上扩充。
[root@localhost root]# echo “this is \ >long command” This is long command
下面以学生成绩表为实例,学习Shell的基本操作。
1.用create命令创建表,其格式如下:
hbase(main):002:0> create 'scores', 'grade', 'course' 0 row(s) in 4.1610 seconds
2.查看当前HBase中有哪些表,应用list命令,其格式如下:
hbase(main):003:0> list scores 1 row(s) in 0.0210 seconds
3.要查看scores表的结构,可使用describe命令实现,格式如下:
bbase(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.采用put命令,在行名为Tom、列族为grad的列名中插入语句,格式如下:
hbase(main):005:0> put 'scores', 'Tom', 'grade:', '1' 0 row(s) in 0.0070 seconds
5.添加数据采用put命令,给Tom列族corse:math添加数据,格式如下:
hbase(main):006:0> put 'scores', 'Tom', 'course:math', '87' 0 row(s) in 0.0040 seconds
6.添加数据采用put命令,给Tom列族corse:math添加数据,格式如下:
hbase(main):006:0> put 'scores', 'Tom', 'course:math', '87' 0 row(s) in 0.0040 seconds
7.采用put命令实现,格式如下:
hbase(main):008:0> put 'scores', 'Jerry', 'grade:', '2' 0 row(s) in 0.0040 seconds
8.采用get命令,查看表中行名为“Tom”的数据,格式如下:
hbase(main):011:0> get 'scores', 'Tom' COLUMN CELL course:art timestamp=1224726394286, value=97 course:math timestamp=1224726377027, value=87 grade: timestamp=1224726360727, value=1 3 row(s) in 0.0070 seconds
9.采用scan命令,查看表中的所有数据,命令格式如下:
hbase(main):012:0> scan 'scores' ROW COLUMN+CELL Tom column=course:art, timestamp=1224726394286, value=97 Tom column=course:math, timestamp=1224726377027, value=87 Tom column=grade:, timestamp=1224726360727, value=1 Jerry column=course:art, timestamp=1224726424967, value=80 Jerry column=course:math, timestamp=1224726416145, value=100 Jerry column=grade:, timestamp=1224726404965, value=2 6 row(s) in 0.0410 seconds