对于具有两个整数的复合行键的表,从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)。
答案 0 :(得分:0)
这是因为toBytes
重载以接受long
和int
参数,而JRuby始终将Fixnum
转换为long
。无法使用int
参数选择重载。
相反,您必须使用其他方法来创建数组。首先初始化一个空数组,然后添加每个ID:
rowkey = Java::byte[8].new
Bytes.putInt(rowkey, 0, id.to_i)
Bytes.putInt(rowkey, 4, sid.to_i)