0

2つの整数の複合行キーを持つテーブルの場合、hbaseシェルから行を取得するコマンドは何である必要があります。

このサンプルルビースクリプトを作成しました

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) 
....
....
....

hbaseorg.jruby.Mainscript.rbを呼び出したときに表示される出力1020\ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x0A \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x14これは明らかに16バイトの長さを示しています。長さが8バイトであることを確認するにはどうすればよいですか(idの場合は4、sidの場合は4)。

4

1 に答える 1

0

これは、 と の両方の引数toBytesを受け入れるようにオーバーロードされており、JRuby は常に に変換されるためです。引数でオーバーロードを選択する方法はありません。longintFixnumlongint

代わりに、アレイを作成する別の方法を使用する必要があります。最初に空の配列を初期化し、次に各 ID を追加します。

rowkey = Java::byte[8].new
Bytes.putInt(rowkey, 0, id.to_i)
Bytes.putInt(rowkey, 4, sid.to_i)
于 2013-01-19T20:14:43.587 に答える