文档章节

HBase创建表指定版本和未指定版本区别:

八戒_o
 八戒_o
发布于 2016/01/04 00:02
字数 668
阅读 1392
收藏 1

http://jiajun.iteye.com/blog/945358   参详-》源码实现

HBase创建表未指定版本  [建表时默认的VERSION是1.]

create 'mytable', {NAME => 'colfam1'}

'mytable'中添加三条数据:

put 'mytable','001','colfam1','1@'

put 'mytable','001','colfam1','1%'

put 'mytable','001','colfam1','1&'

 put 'mytable','001','colfam1','1*'


scan 'mytable' 中的数据【默认只能查看最新的数据,想查看多个版本需要指定下

看到的最后一条记录。


查找时指定了版本,还是看到最后一条记录。虽然加了VERSIONS,但get的结果是1条;这就是因为建表时默认的VERSION是1.

可以修改VERSIONS:alter 'member',{NAME=>'info','VERSIONS'=>2}


分析:与建表时指定的保留版本数有关系


HBase创建表指定版本:(加了VERSIONS=>3,就可以查到历史的数据了,但是必须再创建表的时候加上VERSIONS,否则无效

create 'mytable', {NAME => 'colfam1', VERSIONS => 5,MIN_VERSIONS => '3'}

put 'mytable','001','colfam1','1@'
put 'mytable','001','colfam1','1%'

put 'mytable','001','colfam1','jhl'

put 'mytable','001','colfam1','hjf'

 get 'mytable','001',{COLUMN => 'colfam1',VERSIONS => 3}

get 'mytable','001',{COLUMN => 'colfam1',VERSIONS => 5}



总结:1.若想保留表的列族的历史记录:就要在当前列上指定版本信息

{COLUMN => 'colfam1',VERSIONS => 5}

2.scan table 始终是扫描到表的每一行的最大版本的那条记录。

参详api解释:

Gets实在Scan的基础上实现的。可以详细参见下面的讨论 Get 同样可以用 Scan来描述.

默认情况下,如果你没有指定版本,当你使用Get操作的时候,会返回最近版本的Cell(该Cell可能是最新写入的,但不能保证)。默认的操作可以这样修改:

  • 如果想要返回返回两个以上的把版本,参见Get.setMaxVersions()

  • 如果想要返回的版本不只是最近的,参见 Get.setTimeRange()

    要向查询的最新版本要小于或等于给定的这个值,这就意味着给定的'最近'的值可以是某一个时间点。可以使用0到你想要的时间来设置,还要把max versions设置为1.

5.8.1.2. 默认 Get 例子

下面的Get操作会只获得最新的一个版本。

        Get get = new Get(Bytes.toBytes("row1"));
        Result r = htable.get(get);
        byte[] b = r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("attr"));  // returns current version of value

5.8.1.3. 含有的版本的Get例子

下面的Get操作会获得最近的3个版本。

        Get get = new Get(Bytes.toBytes("row1"));
        get.setMaxVersions(3);  // will return last 3 versions of row
        Result r = htable.get(get);
        byte[] b = r.getValue(Bytes.toBytes("cf"), Bytes.toBytes("attr"));  // returns current version of value
        List<KeyValue> kv = r.getColumn(Bytes.toBytes("cf"), Bytes.toBytes("attr"));  // returns all versions of this column

http://blog.csdn.net/wind520/article/details/39344805   (API实现 )

© 著作权归作者所有

共有 人打赏支持
上一篇: HBase中rowkey设计
下一篇: vi 常用操作命令
八戒_o
粉丝 22
博文 123
码字总数 43412
作品 0
成都
程序员
私信 提问
Hbase Java API详解

HBase是Hadoop的数据库,能够对大数据提供随机、实时读写访问。他是开源的,分布式的,多版本的,面向列的,存储模型。 在讲解的时候我首先给大家讲解一下HBase的整体结构,如下图: HBase ...

凡16
2013/12/26
0
0
一文读懂分布式数据库Hbase

一、 1、什么是Hbase。 是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。 适合于存储非结构化数据,基于列的而不是基于行的模式 如图:Hadoop生态中HBase与其他部分的...

hblt-j
07/26
0
0
HBase中存取图片、文档数据(HBase MOB)

Hbase MOB介绍 HBase通常存取小于10K的数据性能很好,如果文件稍大点,比如中等文件的大小,大小在100K<10M之间,由于压缩会带来性能下降,会导致region不可用。 为了解决这个问题,HBase引入...

jeff-qq
2017/10/19
0
0
HBase 常用Shell命令

1.进入hbase shell console $HBASE_HOME/bin/hbase shell 如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbase shell进入可以使用whoami命...

zlfwmm
06/26
0
0
docker入门到实战(9)docker快速安装hbase

下载镜像 docker pull harisekhon/hbase 运行容器 docker run -ti harisekhon/hbase当你执行成功之后直接进入hbase shell,慢慢享用吧 使用hbase 退出容器后,下次再进入可以使用 docker exe...

编程老司机
05/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

TiDB EcoSystem Tools 原理解读(一):TiDB-Binlog 架构演进与实现原理

简介 TiDB-Binlog 组件用于收集 TiDB 的 binlog,并提供实时备份和同步功能。该组件在功能上类似于 MySQL 的主从复制,MySQL 的主从复制依赖于记录的 binlog 文件,TiDB-Binlog 组件也是如此...

TiDB
10分钟前
0
0
Confluence 6 文档主题合并问答

在 Confluence 官方 前期发布的消息 中,文档主题在 Confluence 6.0 及其后续版本中已经不可用。我们知道你可能对这个有很多好好奇的问题,因此我们在这里设置了一个问答用于帮助你将这个主题...

honeymose
13分钟前
0
0
sparkCore-RDD详解

1.1 什么是RDD 1.1.1 产生背景 当初设计RDD主要是为了解决三个问题: Fast: Spark之前的Hadoop用的是MapReduce的编程模型,没有很好的利用分布式内存系统,中间结果都需要保存到external di...

freeli
14分钟前
0
0
walle的试用和结合vagrant

walle Vagrant 入门指南

miaojiangmin
16分钟前
0
0
python popen.stdout.read阻塞 解决办法

需求:利用python的subprocess模块结合logging模块实现监控子程序运行情况 代码如下(程序阻塞在stdout.readz这里,日志里找不到hang on...................): import osimport sysimpor...

fang_faye
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部