2016-11-20 4 views
2

Я новичок в Hbase. Нужна помощь, У меня есть таблица с некоторыми данными в Hbase.Hbase: Auto increment of column

Id Name Address 
1 john XX-XX 
2 mike XXX-XX 

и Id должен автоматически увеличиваться. Теперь я должен вставить данные в таблицу, как при вставке 10 записывает Id следует увеличивать до 12, как

Id Name Address 
1 john XX-XX 
2 mike XXX-XX 
3 foo XXXX 
... 
... 
12 booo xxx 

Может быть думать генератора последовательности в Hbase. Может кто-нибудь помочь мне с кодом.

+0

Вы работаете в оболочке или в java-коде? –

+0

код java. Можем ли мы использовать концепцию счетчиков в hbase? Если да, то как мы можем это сделать. – vikv

+0

Читайте о rowkeys и их распределении по серверам областей и о том, насколько плохими будут последовательные строки строк, рассматривающие hotspotting регионов и т. Д. И т. Д., Вы можете создать последовательное значение для семейства столбцов, используя любой язык программирования, который имеет драйверы hbase и т. Д. Также прочтите это ответьте здесь, и вопрос может быть дубликатом этого вопроса. http://stackoverflow.com/questions/26890944/hbase-auto-increment-any-column-row-key –

ответ

2

HBase не имеет генераторов последовательности. И, как замечает Сергей, использование последовательности в качестве строки не рекомендуется. Когда он сталкивается с такой необходимостью, его следует тщательно анализировать. Если вам это нужно, рекомендуется использовать salted key approach.

HBase поддерживает глобальные счетчики (increment actions), которые могут использоваться для генерации последовательностей. Однако они не могут использоваться атомарно для генерации значения ключа для добавляемой строки (вам нужно увеличивать и получать значение, а затем помещать новую строку). Таким образом, вы можете получить пробелы, если последующий put терпит неудачу, и у вас есть 2 RPC.

Когда мы используем счетчики таким образом, мы используем соленые ключи, принимаем, что могут возникать пробелы, и увеличивать на блоки, чтобы избежать RPC для каждого необходимого ключа.

+0

Как насчет счетчиков: https: //cloudfront.blogspot. fr/2012/06/hbase-counters-part-i.html? –

+0

Да, можно использовать счетчик, но это все равно приводит к распределению плохих ключей и означает, что у вас есть 2-х прохождение обновления (один для получения идентификатора последовательности, один для его использования), который является хитом производительности и оставляет потенциальный разрыв в ключах (что может не иметь значения), если второе обновление не удалось. –

+0

Согласен, это плохое распределение ключей. все же это означает, что у HBase есть генераторы последовательности, может быть, это было добавлено после вашего первоначального ответа? –