Есть ли максимальный номер версии в hbase? - PullRequest
7 голосов
/ 21 октября 2011

Если я хочу вставить в таблицу:

row | fam:qualifier | timestamp | value
1 | foo:bar | 12345 | 2
1 | foo:bar | 12346 | 3
1 | foo:bar | 12347 | 2
1 | foo:bar | 12348 | 1
.
.
. 
1 | foo:bar | 123410 | 2

Я могу указать в оболочке hbase максимальное количество версий для получения определенной строки, но когда я указываю, например, «100», он возвращает мне только 4 версии ... Есть ли максимум?

Ответы [ 3 ]

14 голосов
/ 21 октября 2011

Возвращает только 4 версии, поскольку семейство столбцов настроено для хранения максимум 4 версий.

Если вы хотите сохранить больше версий, вам нужно изменить CF.Использование оболочки hbase:

hbase> alter 'table_foo', {NAME => 'column_fam_foo', VERSIONS => 100}

Значение по умолчанию для максимальных версий: 1 *:

http://hbase.apache.org/book/schema.versions.html

* Кажется, значение по умолчанию для максимальных версий было изменено3 к 1 в какой-то момент.

2 голосов
/ 17 ноября 2011

ответ отчасти правильный.Неверно: hbase хранит три версии.Доказательство см. Ниже.Верно: вы можете установить максимальное количество версий, которое hbase возвращает через

alter 'marketdata', NAME => 'field', VERSIONS => 100   

Но сейчас давайте предположим, что я не менял переменную версии.

У меня есть десять записей в моей базе данных с временными метками от 0 до 9. Самая последняя временная метка:

hbase(main):025:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask'}                                 
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=9,         value=0.9940174211042572                                                  
1 row(s) in 0.0590 seconds

hbase(main):026:0> 

Отображаются следующие значения от 1 до 5:*

hbase(main):027:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,5], VERSIONS=>5}
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=4, value=0.530618878519702                                                   
 field:ask                     timestamp=3, value=0.051028316270589014                                                
 field:ask                     timestamp=2,     value=0.11949750640509116                                                 
3 row(s) in 0.0130 seconds

hbase(main):028:0>

... и когда я устанавливаю свою конечную метку времени на 10, она по-прежнему показывает только три последние версии ДО этой метки времени и подавляет предыдущие:

hbase(main):028:0> get 'marketdata', 'instrument1', {COLUMN => 'field:ask', TIMERANGE => [0,10], VERSIONS=>5}
COLUMN                             CELL                                                                                   
 field:ask                     timestamp=9,     value=0.9940174211042572                                                  
 field:ask                     timestamp=8,     value=0.6941263513176372                                                  
 field:ask                     timestamp=7,     value=0.1814043435754933                                                  
3 row(s) in 0.0400 seconds

hbase(main):029:0> 
0 голосов
/ 28 апреля 2015

Концепция версии строго поддерживается на уровне семейства столбцов.Это настраиваемый параметр.

            columnFamily.setMaxVersions(required version);

Чем больше версий, тем выше вероятность получения данных из нескольких файлов HFiles.

Лучшим способом было бы поддерживать минимальную версию и инкапсулировать данные в один большой двоичный объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...