我正试图在Hbase将TTL设置为一行。我无法将TTL设置为列族,因为该表已经存在,并且无法更改该表。
我尝试的是在Put操作中使用setTTL函数。但这似乎不起作用,因为即使时间已经过去,当我对表进行扫描操作时,信息仍然存在。
如果我在函数中放一个负值,我在表中没有任何数据,我认为这是有意义的,因为我使用的是负的ttl,因此数据根本不被存储.
( 1)你认为我在使用适当的函数吗?
2)是否有一种方法可以在HBase中查看此信息(一行的TTL值)?
编辑:这里是一个描述命令的输出(请提醒我不能更改列族的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版本中遇到了一个bug或一些奇怪的地方,因为TTL在大多数情况下都是按预期工作的。但是如果我设置它,在它到期之前,我在表中强制分割,我发现TTL将不再起作用。这就像在拆分过程中没有维护Cell值一样。我发现它以前对我不起作用,因为我的TTL是不起作用的。一天后,我在那段时间里发生了一些分裂的事件。
我将在其他版本中验证这种行为,如果我发现了新的东西,请告诉您。
发布于 2016-02-22 09:27:03
列族中的MIN_VERSION参数是什么?正如这里提到的,如果它是1,hbase保持值即使是ttl已经过期。
http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/44036
(谢谢你的提问,我今天学到了新的东西:)
https://stackoverflow.com/questions/35527840
复制相似问题