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 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐