2

我在 Hbase 中创建了以下 Schema,

create 'test','lg'

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

对于这个 Schema,我想创建一个 rowkey。我的问题是如何在 hBase shell 中创建行键。

使用上述模式,我创建了列族。如何使用 hbase shell 定义行键。或者我需要像定义列族一样定义行键。如果是这样,HBase 如何区分它是列族成员,而该字段是行键。

我想将我的行键作为用户 ID 和时间戳的组合键。所以请让我知道如何通过 shell 在 hbase 中创建复合行键。

请帮忙。

4

2 回答 2

1

在这种情况下,“row1”是您的行键。没有设计时指定行键的方法,因为对于 HBase,它们只是字节数组。要做任何比这更有趣的事情,您需要在应用程序代码(Java、ruby 脚本等)中完成。

如果您想以预先定义行键结构的方式与 HBase 交互,您可以尝试 Phoenix,HBase 上的开源 SQL“皮肤”:

https://github.com/forcedotcom/Phoenix

(完全披露:Phoenix 项目最初是由我的雇主 Salesforce 创建的。)

于 2013-04-23T21:12:19.967 回答
1

正如 Ian 所说,您不需要“创建”行键,无论您写什么作为行键都将是行键,它只是一个字节数组,所以任何事情都会发生。

您仍然需要仔细考虑什么是适合您的行键。当你这样做时,你需要考虑你为你的数据计划的访问模式和 hbase 表的结构方式,例如键在磁盘上按字典顺序排序,每个存储的值都有一个时间戳,限定符被分组到列族等.

于 2013-04-24T09:35:48.940 回答