我想用put替换行中列的内容,但它正在添加更新版本的数据。尝试添加时间戳,但仍将创建具有不同版本的新值。有没有办法替换同一版本的内容?
carvr3hs1#
您确定使用了正确的时间戳值吗?我为您举了一个例子(在hbase shell中):首先,我们创建一个名为 tmp1 其中一个列族命名为 f1 ,每个单元格可以有三个版本:
tmp1
f1
hbase(main):005:0> create 'tmp1', {NAME => 'f1', VERSIONS => 3} 0 row(s) in 1.1160 seconds
下一步,我们把一行的值 v1 进入表格:
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 :
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 .
toiithl62#
直接从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);
2条答案
按热度按时间carvr3hs1#
您确定使用了正确的时间戳值吗?
我为您举了一个例子(在hbase shell中):
首先,我们创建一个名为
tmp1
其中一个列族命名为f1
,每个单元格可以有三个版本:下一步,我们把一行的值
v1
进入表格:然后,我们再做一次
put
使用相同的行键r1
,列名f1:c1
和时间戳1
,但具有不同的值v2
:如您所见,单元格已替换为新值
v2
.toiithl62#
直接从hbase文档: