Установить TTL строки на HBase

Я пытаюсь установить 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 день, и в этот период у меня было несколько сплит-мероприятий.

Я проверю это поведение в других версиях и сообщу вам, если найду что-нибудь новое.


person Javi Ortiz    schedule 20.02.2016    source источник
comment
вы пробовали это с новыми строками / столбцами? или только с теми, которые обновляются.   -  person Martin Serrano    schedule 22.02.2016
comment
Собственно тестирую только с новыми строками   -  person Javi Ortiz    schedule 03.03.2016


Ответы (1)


Какой у вас параметр MIN_VERSION в этом семействе столбцов? Как упоминалось здесь, если он равен 1, hbase сохраняет значения, даже если срок действия ttl истек.

http://comments.gmane.org/gmane.comp.java.hadoop.hbase.user/44036

(спасибо за вопрос, сегодня узнал новое :))

person halil    schedule 22.02.2016
comment
Спасибо Халилю за ответ. К сожалению, это не кажется моей проблемой, потому что у меня MIN_VERSION = 0, как вы можете видеть в описании таблицы (я обновил свой вопрос) - person Javi Ortiz; 22.02.2016