尝试更新列值时,带有时间戳的 Hbase 放置失败

Posted

技术标签:

【中文标题】尝试更新列值时,带有时间戳的 Hbase 放置失败【英文标题】:Hbase put with timestamp fails when trying to update column value 【发布时间】:2015-01-08 07:54:05 【问题描述】:

我正在使用 put 在 hbase 中创建一行,如下所示:

Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(columnFamily), Bytes.toBytes(qualifier), cellTimestamp, value);

这些 puts 被批处理,然后添加到 hbase 中:

table.setAutoFlushTo(true);
table.put(batch);
table.flushCommits();

这适用于新行。如果我随后尝试更新列值并指定新的 cellTimestamp,则数据不会更新。这可能吗? hbase 表是使用 VERSIONS => '1' 创建的。

提前致谢!

【问题讨论】:

【参考方案1】:

通常不建议提供 cellTimestamp,但如果您需要它,请确保 cellTimestamp...

...大于上一版本 ...以毫秒为单位

以下是关于版本控制和 HBase 如何处理时间戳的一些不错的读物:

http://hbase.apache.org/book/versions.html http://www.ngdata.com/bending-time-in-hbase

【讨论】:

谢谢鲁本,这很有意义并帮助我解决了我的问题。我将只为该单元格保留时间戳,但如果我添加一个大于当前时间戳的时间戳,它就可以工作!非常感谢。

以上是关于尝试更新列值时,带有时间戳的 Hbase 放置失败的主要内容,如果未能解决你的问题,请参考以下文章

VBA 自动保存为带有用户名和时间戳的宏

尝试在 Oracle Sql 中将列值更改为默认值时标识符无效

Hbase与Oracle比较(列式数据库与行式数据库)

将数据插入另一个表时触发以更新带有时间戳的表

如何使用 DB2 中表的列值更新 DB1 中表的列值?

Pig + Hbase 原子增量列值