Hadoop 在HBase上设置行TTL
我正在尝试在Hbase中将TTL设置为一行。我无法将TTL设置为列族,因为该表已经存在,我无法更改它 我尝试的是在Put操作中使用函数。但这似乎不起作用,因为即使时间已经过去,当我对表进行扫描操作时,信息仍然存在 如果我在函数中输入一个负值,我在表中没有任何数据,我认为这是有意义的,因为我使用的是一个负值ttl,因此数据根本没有被存储 1) 你认为我用的是正确的函数吗 2) 有没有办法在HBase中查看此信息(一行的TTL值) 编辑: 下面是descripe命令的输出(请注意,我不能更改列族的TTL值): Edit2:我想我可能在HBase 1.0.0版中遇到了一个bug或一些奇怪的东西,因为TTL在大多数情况下都能正常工作。但是如果我设置了它,并且在它到期之前,我在表中强制拆分,我发现TTL将不再工作。就像分割过程中没有维护单元格TTL值一样。我发现它以前对我不起作用,因为我的TTL是一个近似值。一天,在那段时间里,我有一些分裂的事件Hadoop 在HBase上设置行TTL,hadoop,hbase,ttl,Hadoop,Hbase,Ttl,我正在尝试在Hbase中将TTL设置为一行。我无法将TTL设置为列族,因为该表已经存在,我无法更改它 我尝试的是在Put操作中使用函数。但这似乎不起作用,因为即使时间已经过去,当我对表进行扫描操作时,信息仍然存在 如果我在函数中输入一个负值,我在表中没有任何数据,我认为这是有意义的,因为我使用的是一个负值ttl,因此数据根本没有被存储 1) 你认为我用的是正确的函数吗 2) 有没有办法在HBase中查看此信息(一行的TTL值) 编辑: 下面是descripe命令的输出(请注意,我不能更改列族的T
我将在其他版本中验证此行为,并在发现新内容时通知您。该列族的最小版本参数是什么?正如这里提到的,如果它是1,即使ttl已过期,hbase也会保留值
(谢谢你的提问,我今天学到了新东西:)谢谢哈利尔的回答。不幸的是,这似乎不是我的问题,因为我的MIN_VERSION=0,正如您在表的描述中所看到的(我已经更新了我的问题),您是否尝试过使用新行/列?或者只是对更新的行进行测试。实际上,我只对新行进行测试
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'}