2015-06-03 114 views
2

說我有這些HBase的表,這在HBase的WebUI中被描述爲TTL:如何取消設置的HBase列族

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

我怎麼取消設置在test_bar表中的TTL?

回答

4

原來,webui沒有顯示默認值。

如果我使用HBase的殼,我看到(按摩輸出位爲清楚起見,在這裏):

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'}]} 

所以在這32位簽署了test_foo表中的TTL以及爲2147483647秒(最大值int,大致對應於68年),可能是HBase的默認TTL。

我將test_bar表上的TTL設置爲該maxint,例如,如下所示:

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

結果:TTL屬性不再顯示在webui中。 #pieceofmind

+0

TTL =>'2147483647'這確實是默認值。它在源代碼中被定義爲一個常量。 –

+1

hbase shell也接受更優雅 TTL => org.apache.hadoop.hbase.HConstants :: FOREVER – patrungel