2

put を使用して行の列の内容を置き換えたいのですが、新しいバージョンのデータが追加されています。タイムスタンプを追加しようとしましたが、バージョンが異なる新しい値が作成されています。同じバージョンのコンテンツを置き換えるアイデアはありますか?

4

2 に答える 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 に答える