首页 文章

在HBase设置行TTL

提问于
浏览
2

我正在尝试在Hbase上设置一个TTL . 我无法将TTL设置为列族,因为该表已经存在,我无法更改它 .

我尝试的是在Put操作中使用setTTL函数 . 但它似乎无法正常工作,因为即使时间过去,当我对表进行扫描操作时信息仍然存在 .

如果我在函数中添加一个负值,我在表中没有任何数据,我认为那是有意义的,因为我使用了负ttl,因此数据根本没有存储...

1)你认为我正在使用正确的功能吗?

2)有没有办法在HBase中查看此信息(一行的TTL值)?

Edit: 这是describe命令的输出(请提醒我不能更改列族的TTL值):

hbase(main):010:0> describe "Snapshot"
Table Snapshot is ENABLED
Snapshot, {CONFIGURATION => {'KeyPrefixRegionSplitPolicy.prefix_length' => '8', 'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy'}}
COLUMN FAMILIES DESCRIPTION
{NAME => 'metadata', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'GZ', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
{NAME => 'sample', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'GZ', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}

Edit2: 我想我可能遇到过一个错误或者HBase 1.0.0版的奇怪之处,因为在大多数情况下TTL正如预期的那样工作 . 但是,如果我设置它并在它到期之前,我强制在表中分割,我再也不能工作了 . 因为我的TTL是aprox,所以之前我正在为我工作 . 1天,我在那段时间里有一些分裂事件 .

我将在其他版本中验证此行为,并让您知道我是否找到了新的东西 .

1 回答

相关问题