我在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中创建复合行键。
请帮忙。
答案 0 :(得分:1)
在这种情况下,“row1”是你的rowkey。没有设计时指定行键的方法,因为HBase只是字节数组。要做任何比这更好的事情,你需要在应用程序代码(Java,ruby脚本等)中执行它。
如果您希望以预先定义行键结构的方式与HBase交互,可以尝试使用Phoenix,HBase上的开源SQL“皮肤”:
https://github.com/forcedotcom/Phoenix
(完全披露:Phoenix项目最初是由我的雇主Salesforce创建的。)
答案 1 :(得分:1)
正如Ian所说,你不需要“创建”行键,你所写的行键是行键,它只是一个bytearray,所以任何东西都可以。
您仍然需要考虑什么是适合您的行键。执行此操作时,您需要考虑为数据规划的访问模式以及hbase表的结构方式,例如:密钥按字典顺序排列在磁盘上,每个存储的值都有一个时间戳,限定符分组为列族等。