我想使用put替换行中的列的内容,但它正在添加更新版本的数据。尝试添加时间戳,但仍会创建具有不同版本的新值。 有没有想法替换相同版本的内容?
答案 0 :(得分:3)
您确定使用了正确的时间戳值吗?
我为你做了一个例子(在hbase shell中):
首先,我们创建一个名为tmp1
的表,其中一个列族名为f1
,每个单元格可以有三个版本:
hbase(main):005:0> create 'tmp1', {NAME => 'f1', VERSIONS => 3}
0 row(s) in 1.1160 seconds
接下来,我们将一行值v1
放入表中:
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
:< / p>
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
。
答案 1 :(得分:1)
直接退出HBase documentation:
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);