HBase行密钥设计

时间:2013-04-23 20:33:28

标签: hbase

我在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定义行键。或者我需要像我定义为列族一样定义rowkey。如果是这样,HBase如何区分它是一个columnfamily成员,这个字段是一个行键。

我想将我的rowkey作为userid和timestamp的复合键。所以请告诉我如何通过shell在hbase中创建复合行键。

请帮忙。

2 个答案:

答案 0 :(得分:1)

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

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

https://github.com/forcedotcom/Phoenix

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

答案 1 :(得分:1)

正如Ian所说,你不需要“创建”行键,你所写的行键是行键,它只是一个bytearray,所以任何东西都可以。

您仍然需要考虑什么是适合您的行键。执行此操作时,您需要考虑为数据规划的访问模式以及hbase表的结构方式,例如:密钥按字典顺序排列在磁盘上,每个存储的值都有一个时间戳,限定符分组为列族等。