从HBase shell获取具有复合rowkey的表

时间:2013-01-19 14:33:30

标签: hbase

对于具有两个整数的复合行键的表,从hbase shell获取行的命令应该是什么。

我已创建此示例ruby脚本

include Java
import org.apache.hadoop.hbase.util.Bytes

id   = ARGV[0]
sid  = ARGV[1]

byte [] rowkey = Bytes.add(Bytes.toBytes(id.to_i),Bytes.toBytes(sid.to_i))
puts Bytes.toStringBinary (rowkey) 
....
....
....

当我调用hbase org.jruby.Main script.rb 10 20时看到的输出 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x0A \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x14清楚地显示16个字节长。我如何确保它长8个字节(4个用于id,4个用于sid)。

1 个答案:

答案 0 :(得分:0)

这是因为toBytes重载以接受longint参数,而JRuby始终将Fixnum转换为long。无法使用int参数选择重载。

相反,您必须使用其他方法来创建数组。首先初始化一个空数组,然后添加每个ID:

rowkey = Java::byte[8].new
Bytes.putInt(rowkey, 0, id.to_i)
Bytes.putInt(rowkey, 4, sid.to_i)