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, например, ключи располагаются на диске лексикографически, для каждого сохраненного значения есть временная метка, классификаторы группируются в семейства столбцов и т. Д.,