一个student表,表的逻辑模型如下:行键为学号,时间戳是自动添加的,列族name是名字,列族score是各科分数。行键是唯一的。
行键
时间戳
列族name
列族score
20130001
T2
'zhangsan'
T3
score:Chinese='90'
T4
score:English='80'
20130002
T5
'lisi'
T6
score:Chinese='95'
......
Tn
进入HBase的shell:
[coder@h1 hbase-0.90.5]$ bin/hbase shell
HBase Shell; enter 'help' forlist of supported commands.
Type"exit"to leave the HBase Shell
Version0.90.5, r1212209, Fri Dec 9 05:40:36 UTC 2011hbase(main):001:0>
1、创建student表
hbase(main):002:0>create 'student','name','score'0 row(s) in 2.0570seconds
hbase(main):003:0>
student:表名
name:列族
score:列族
2、查看已创建的表
hbase(main):001:0>list
TABLE
student1 row(s) in 0.7590seconds
hbase(main):002:0>
3、向表中插入数据
使用put命令插入数据,参数为表名、行名(行键)、列名、值,其中列名需要列族作为前缀。
1)向student表中插入学号(行键)为2013001、名字为zhangsan的记录
hbase(main):001:0> put 'student','2013001','name:','zhangsan'0 row(s) in 1.1090seconds
2)查看表的记录
hbase(main):002:0>scan 'student'
ROW COLUMN+CELL2013001 column=name:, timestamp=1365846723665, value=zhangsan1 row(s) in 0.2110 seconds
3)给学号为2013001的学生记录分数
hbase(main):003:0> put 'student','2013001','score:Chinese','90'0 row(s) in 0.0360 seconds
hbase(main):005:0> put 'student','2013001','score:English','80'0 row(s) in 0.0290 seconds
hbase(main):006:0>scan 'student'
ROW COLUMN+CELL2013001 column=name:, timestamp=1365846723665, value=zhangsan2013001 column=score:Chinese, timestamp=1365846877328, value=90
2013001 column=score:English, timestamp=1365846957089, value=80
1 row(s) in 0.0580 seconds
4)查看表中记录总数
hbase(main):007:0>count 'student'1 row(s) in 0.0990 seconds
4、查看一行记录
使用get命令,参数为表名、行键
hbase(main):007:0> get 'student','2013001'
COLUMN CELL
name: timestamp=1365846723665, value=zhangsan
score:Chinese timestamp=1365846877328, value=90score:English timestamp=1365846957089, value=80
3 row(s) in 0.0350 seconds
5、判读一个表是否存在
hbase(main):001:0>exists 'student'
Table student does exist0 row(s) in 1.0400seconds
hbase(main):002:0>exists 'student2'
Table student2 does not exist0 row(s) in 0.0150 seconds
6、更新一条记录
hbase(main):001:0> put 'student','2013001','score:Chinese','100'0 row(s) in 0.8070seconds
hbase(main):002:0> get 'student','2013001'
COLUMN CELL
name: timestamp=1365846723665, value=zhangsan
score:Chinese timestamp=1365848492778, value=100score:English timestamp=1365846957089, value=80
3 row(s) in 0.0690seconds
hbase(main):003:0>
7、获取某一列的值
hbase(main):002:0> get 'student','2013001','score'
COLUMN CELL
score:Chinese timestamp=1365848492778, value=100score:English timestamp=1365846957089, value=80
2 row(s) in 0.0340seconds
hbase(main):003:0> get 'student','2013001','score:Chinese'
COLUMN CELL
score:Chinese timestamp=1365848492778, value=100
1 row(s) in 0.0320seconds
hbase(main):004:0>
8、删除整行
把行键为2013002的这一条记录删掉
hbase(main):001:0>scan 'student'
ROW COLUMN+CELL2013001 column=name:, timestamp=1365846723665, value=zhangsan2013001 column=score:Chinese, timestamp=1365848492778, value=100
2013001 column=score:English, timestamp=1365846957089, value=80
2013002 column=name:, timestamp=1365847639588, value=lisi2013002 column=score:Chinese, timestamp=1365847666351, value=70
2013002 column=score:English, timestamp=1365847709403, value=85
2 row(s) in 0.7380seconds
hbase(main):002:0> deleteall 'student','2013002'0 row(s) in 0.0150seconds
hbase(main):003:0>scan 'student'
ROW COLUMN+CELL2013001 column=name:, timestamp=1365846723665, value=zhangsan2013001 column=score:Chinese, timestamp=1365848492778, value=100
2013001 column=score:English, timestamp=1365846957089, value=80
1 row(s) in 0.0390seconds
hbase(main):004:0>
9、删除表
删除表之前需要先disable表
hbase(main):005:0>disable 'user'0 row(s) in 2.1600seconds
hbase(main):006:0>drop 'user'0 row(s) in 1.3750 seconds