2013-04-23 45 views
2

我在HBase的创建以下架构,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' 

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

使用上述模式我创建了列族。如何使用hbase shell定义行密钥。或者我需要像我定义为列族那样定义rowkey。如果是这样的话,HBase如何区分它是一个列族成员,并且这个字段是一个行键。

我想将我的rowkey作为userid和timestamp的组合键。所以请让我知道如何通过shell在hbase中创建一个复合行密钥。

请帮忙。

回答

1

在这种情况下,“row1”是你的rowkey。没有设计时间的方式来指定行键,因为对于HBase他们只是字节数组。要做更奇特的事情,你需要在应用程序代码(Java,Ruby脚本等)中完成。

如果你想在某种程度上,你预先定义的行键结构与HBase的互动,你可以尝试凤凰,一个开源的SQL“皮肤”上的HBase:

https://github.com/forcedotcom/Phoenix

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

1

正如伊恩所说,您不需要“创建”行键,您作为行键所写的行将是行键,只是一个字节阵列而已。

你仍然需要思考什么是适合你的正确行键。当您这样做时,您需要考虑您为数据规划的访问模式以及hbase表的构建方式,密钥按盘按字母顺序排列,存储的每个值都有一个时间戳,限定符分组成列组等。