尝试更新列值时,带有时间戳的 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 放置失败的主要内容,如果未能解决你的问题,请参考以下文章