HBase更新操作

Lin*_* Ma 8 hbase

  1. 我是HBase的新手,我在HBase客户端API中发现,不支持更新操作?那是对的吗?
  2. 如果是,那么更新特定rowkey的值的建议最佳做法是什么?

Arn*_*-Oz 11

您可以使用PUT创建或更新任何单元格的值.你并不需要,除非你想在新版本中没有的一些老小区的使用删除.

说我们有

r1:f1:c1:value1
r1:f1:c2:value2 
Run Code Online (Sandbox Code Playgroud)

你可以把r1:f1:c1新值,你得到:

r1:f1:c1:new value 
r1:f1:c2:value2 
Run Code Online (Sandbox Code Playgroud)

请注意,实际上每个单元格都存储为rowkey,列族,单元格,时间戳,版本和值.因此,根据您设置版本控制的方式(每列系列),您还可以访问旧值,包括执行时间点查询以查看已删除的值.

  • 您可以在HTable API中使用checkAndPut或checkAndDelete http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#checkAndPut(byte [],byte [],byte [], byte [],org.apache.hadoop.hbase.client.Put) (4认同)
  • @tonio HBase是一个"仅附加"商店.这就是为什么做的HBase从comapactions不时(你需要了解并控制看到http://hbase.apache.org/book/important_configurations.html上分裂/ compation部分的东西) (4认同)
  • 嗨@Arnon,我的问题更多是关于如何以原子方式更新.我想在原子操作序列中进行读取(GET)和更新.假设在如何更新的情况下取决于读取的值,所以我想避免读取和更新之间的任何更新.在您的样本中,如何实现目标? (3认同)