HBase Row Key Design

Я создал следующую схему в Hbase,

create 'test','lg'

put 'test','row1','lg:htype','get'
put 'test','row1','lg:ip','192.168.12.123' 
put 'test','row1','lg:stat','success'

Для этой схемы я хочу создать ключ строки. Мой вопрос заключается в том, как создать ключ строки в оболочке hBase.

Используя вышеупомянутую схему, я создал семейство столбцов. Как определить ключ строки, используя оболочку hbase. Или мне нужно определить ключ строки, например, как я определил семейство столбцов. Если так, то как HBase различает, это член столбца, а это поле является ключом строки.

И я хотел бы, чтобы мой rowkey был составным ключом userid и timestamp. Поэтому, пожалуйста, дайте мне знать, как создать составной ключ строки в hbase через shell.

Пожалуйста помоги.

2 ответа

В этом случае "row1" - это ваш rowkey. Во время разработки нет способа указать ключи строки, потому что для HBase это просто байтовые массивы. Чтобы сделать что-то более сложное, вам нужно сделать это в коде приложения (Java, скрипт ruby ​​и т. Д.).

Если вы хотите взаимодействовать с HBase таким образом, чтобы предварительно определить структуру ключа строки, вы можете попробовать Phoenix, "оболочку" SQL с открытым исходным кодом на HBase:

https://github.com/forcedotcom/Phoenix

(Полное раскрытие: проект Phoenix изначально был создан моим работодателем, Salesforce.)

Как сказал Ян, вам не нужно "создавать" ключ строки, то, что бы вы ни записали в качестве ключа строки, будет ключом строки, и это всего лишь байтовый массив, так что все идет.

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

Другие вопросы по тегам