设为首页 加入收藏

TOP

Hbase的TTL字段超时设置测试
2018-11-29 17:53:04 】 浏览:32
Tags:Hbase TTL 超时 设置 测试

在工作中,很多时候需要对表字段进行限定,例如限定一列的超时时间等。

今天就总结一下:

1. 做hbase表做更改前,首先要disable 这个表,否则记录会丢失。

首先,我们建立一个测试表test,有一个列簇fa

hbase(main):111:0> describe 'test'
DESCRIPTION ENABLED
'test', {NAME => 'fa', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTE true
R => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSI
ON => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CE
LLS => 'false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOC
KCACHE => 'true'}
1 row(s) in 0.0770 seconds

表默认的TTL超时时间为:TTL => '2147483647' 大约596523.2352777778小时=24855.13天=69.04年

也就是说从最后一次更新的记录应该69.04年才会自动失效。

那么对于某些列,我存储一段时间后,需要该列值失效。那如何设置?下面我们做一个测试:

我们先向test表中插入一下记录:

1 2014-11-11 14:09:40

2 2014-11-12 14:09:40

3 2014-11-13 14:09:40

4 2014-11-14 14:09:40

5 2014-11-15 14:09:40


hbase(main):082:0> put 'test',1,'fa:uptime','2014-11-11 14:09:40'

。。。。。。。。。。。。。

hbase(main):123:0> scan 'test'
ROW COLUMN+CELL
1 column=fa:uptime, timestamp=1415688066815, value=2014-11-11 14:09:40
2 column=fa:uptime, timestamp=1415688082648, value=2014-11-12 14:09:40
3 column=fa:uptime, timestamp=1415688092101, value=2014-11-13 14:09:40
4 column=fa:uptime, timestamp=1415688101473, value=2014-11-14 14:09:40
5 column=fa:uptime, timestamp=1415688115318, value=2014-11-15 14:09:40
5 row(s) in 0.0400 seconds

我们修改过期时间为200s 查看记录

hbase(main):126:0> disable 'test' //修改表前,需要先disable 表

hbase(main):114:0> alter "test",NAME=>'fa',TTL=>'200' //修改表的列簇超时时间为200s

hbase(main):114:0> enable "test" //使表可用,以供查询

hbase(main):129:0> scan 'test' //此时查询时,表中原来的5条,记录均存在,接下来我们更新其中一条。再查看。
ROW COLUMN+CELL
1 column=fa:uptime, timestamp=1415688066815, value=2014-11-11 14:09:40
2 column=fa:uptime, timestamp=1415688082648, value=2014-11-12 14:09:40
3 column=fa:uptime, timestamp=1415688092101, value=2014-11-13 14:09:40
4 column=fa:uptime, timestamp=1415688101473, value=2014-11-14 14:09:40
5 column=fa:uptime, timestamp=1415688115318, value=2014-11-15 14:09:40
5 row(s) in 0.0420 seconds

由于200s时间很短,我们选择跟新第三条记录:跟新为:3 2014-11-16 14:09:40

hbase(main):130:0> put 'test',3,'fa:uptime','2014-11-16 14:09:40'
0 row(s) in 0.0200 seconds

更新后再去查看,发现表中的记录只剩下一条了:也就是我们最后跟新的这条。为什么后面的会消失呢,是因为,变测试变写博客,200s时间稍短,更新第三条,记录后,写过博客再去查看,此时就连第5条记录也过期了。
hbase(main):131:0> scan 'test'
ROW COLUMN+CELL
3 column=fa:uptime, timestamp=1415688323548, value=2014-11-16 14:09:40
1 row(s) in 0.0140 seconds

再过200后查看,表中的记录数为空,所有的记录都超时,被删除。

总结:测试说明,我们可用对hbase的某些列簇,做一些高级设置,例如超时,压索,等设置。注意在设置之前需要先disable表,否则,表中记录会被清空。

另外,TTL=>的更新超时时间是指:该列最后更新的时间,到超时时间的限制,而不是第一次创建,到超时时间。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇HBase的KeyValue分析 下一篇hbase命令和查看当前连接数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目