HBase中通过rowkey和列族CF确定的一个数据存储单元称成Cell
RowKey Time Stamp CF1 CF2 CF3
t6 CF2:q2=v2 CF3:q3=v3
11248112 t3
t1 CF1:q1=v1
首先,版本是针对列族CF而言的,
每个Cell都会保存同一份数据的多个版本,也就是相同列族CF:列CL可以多次插入值,HBase默认会存储3个版本的数据,默认查询是最新版本的数据;某一个版本如果没有插入则为空,不占用存储空间,Cell里的数据全部以字节码的形式存在。
在实际应用中,出于性能或业务需要,我们可能只有一个或其他数量的版本需要存储。那么如何修改这一默认配置呢?
一、建表时设定版本号
create '表名',{NAME='列族名1',VERSIONS=给定一个版本号},{NAME='列族名2',VERSIONS=给定的版本号}
二、建表后修改表配置设定版本号
1. 首先要将表下线
disable 'table'
2. 修改表中指定列族的版本号
alter 'table' , NAME => 'f', VERSION => 1,NAME => 'x', VERSION => 3
3. 重新上线表
enable 'table'
三、同一个rowkey和列族下,多版本列数据查询
1. 指定stu表,rowkey=1008,info列族下,3个版本的数据
hbase(main):036:0> get 'stu','1008',{COLUMN=>'info',VERSIONS=>3}
COLUMN CELL
info:name timestamp=1545223094696, value=wangwu
info:name timestamp=1545223075610, value=lisi
info:name timestamp=1545202502110, value=zhangsan
info:sex timestamp=1545202745329, value=male
2. 指定stu表,rowkey=1008,info列族下,name列下,3个版本的数据
hbase(main):037:0> get 'stu','1008',{COLUMN=>'info:name',VERSIONS=>3}
COLUMN CELL
info:name timestamp=1545223094696, value=wangwu
info:name timestamp=1545223075610, value=lisi
info:name timestamp=1545202502110, value=zhangsan