Я пытаюсь установить TTL в строку на Hbase. Я не могу установить TTL для семейства столбцов, потому что таблица уже существует, и я не могу ее изменить.
Я пробовал использовать setTTL в операции Put. Но кажется, что это не работает, потому что информация все еще присутствует, когда я выполняю операцию сканирования таблицы, даже если время прошло.
Если я поставлю в функцию отрицательное значение, у меня не будет данных в таблице, и я думаю, что это будет иметь смысл, потому что я использую отрицательный ttl, следовательно, данные вообще не сохраняются ...
1) Как вы думаете, я использую правильную функцию?
2) Есть ли способ увидеть эту информацию (значение TTL для строки) в HBase?
Изменить: Вот результат выполнения команды 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 больше не будет работать. Это похоже на то, что значение TTL ячейки не поддерживается в процессе разделения. Я обнаружил, что раньше это не работало для меня, потому что мой TTL был приблизительно. 1 день, и в этот период у меня было несколько сплит-мероприятий.
Я проверю это поведение в других версиях и сообщу вам, если найду что-нибудь новое.