如何取消设置HBase列族的TTL

时间:2015-06-03 14:54:49

标签: hbase

假设我有这些HBase表,它们在HBase webui中描述为:

test_foo      {NAME => 'test_foo', FAMILIES => [{NAME => 'fam'}]}
test_bar      {NAME => 'test_bar', FAMILIES => [{NAME => 'fam', TTL => '1000'}]}

如何取消设置test_bar表上的TTL?

1 个答案:

答案 0 :(得分:5)

原来,webui没有显示默认值。

如果我使用hbase shell,我会看到(为了清楚起见,按摩输出一点):

hbase(main)> describe 'test_foo'
{NAME => 'test_foo', FAMILIES => [{NAME => 'fam', 
    BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '3', 
    COMPRESSION => 'NONE', MIN_VERSIONS => '0', 
    TTL => '2147483647', 
    BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}

hbase(main)> describe 'test_bar'
{NAME => 'test_bar', FAMILIES => [{NAME => 'fam', 
    BLOOMFILTER => 'NONE', REPLICATION_SCOPE => '0', VERSIONS => '3',
    COMPRESSION => 'NONE', MIN_VERSIONS => '0',
    TTL => '1000',
    BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}]}

因此test_foo表上有一个TTL以及2147483647秒(32bit signed int的最大值,相当于大约68年),可能是HBase的默认TTL。

我将test_bar表格上的TTL设置为此maxint,例如如下:

alter 'test_bar', {NAME => 'fam', TTL => '2147483647'}

结果:不再在webui中显示TTL属性。 #pieceofmind