put を使用して行の列の内容を置き換えたいのですが、新しいバージョンのデータが追加されています。タイムスタンプを追加しようとしましたが、バージョンが異なる新しい値が作成されています。同じバージョンのコンテンツを置き換えるアイデアはありますか?
質問する
9059 次
2 に答える
3
正しいタイムスタンプ値を使用しましたか?
私はあなたのために例を作りました(hbaseシェルで):
最初に、という名前tmp1
の1つの列ファミリーで名前が付けられたテーブルを作成します。このテーブルf1
には、セルごとに3つのバージョンを含めることができます。
hbase(main):005:0> create 'tmp1', {NAME => 'f1', VERSIONS => 3}
0 row(s) in 1.1160 seconds
次に、値v1
を含む1つの行をテーブルに配置します。
hbase(main):007:0> put 'tmp1', 'r1', 'f1:c1', 'v1', 1
0 row(s) in 0.0860 seconds
hbase(main):008:0> scan 'tmp1'
ROW COLUMN+CELL
r1 column=f1:c1, timestamp=1, value=v1
1 row(s) in 0.0390 seconds
次に、put
同じ行キーr1
、列名f1:c1
、タイムスタンプを使用して別の操作を行います1
が、値は異なりますv2
。
hbase(main):009:0> put 'tmp1', 'r1', 'f1:c1', 'v2', 1
0 row(s) in 0.0060 seconds
hbase(main):008:0> scan 'tmp1'
ROW COLUMN+CELL
r1 column=f1:c1, timestamp=1, value=v2
ご覧のとおり、セルは新しい値に置き換えられていますv2
。
于 2013-03-14T11:35:12.773 に答える
1
HBaseのドキュメントからまっすぐ:
Put put = new Put( Bytes.toBytes(row));
long explicitTimeInMs = 555; // just an example
put.add(Bytes.toBytes("cf"), Bytes.toBytes("attr1"), explicitTimeInMs, Bytes.toBytes(data));
htable.put(put);
于 2013-03-14T14:17:36.127 に答える