2013-04-11 24 views
1

我正在研究一个原型来评估HBase在真实项目中的使用情况(取决于原型的结果)。在我正在处理的模式中,我在同一个列族中有多个列,我需要以原子方式更新其中的几个列(总是在同一行内)。我使用客户端api的checkAndPut方法做了一些测试,但它似乎只支持比较一个值(因此在put参数中设置一个值)。我是否正确理解这一点?如果是这样,是否有另一种方法来做我所需要的?带多列的CheckAndPut操作

+0

?您使用的是什么版本的HBase – 2013-04-12 05:33:32

+0

我正在使用最新的稳定版本,它是0.94.6.1 – Diego 2013-04-14 23:50:35

回答

1

您可以使用RowMutations将单个行的所有PUT操作设置为一起,并获取所有更改为原子单位。

+0

这将解决在同一行中原子地更改不同列的问题,但我无法看到如何使用checkAndPut方法的功能(仅当存储的值与checkAndPut参数匹配时才执行put操作)和RowMutations一起使用。你能用一个例子来指向我的页面吗?提前致谢。 – Diego 2013-04-15 15:50:36

+1

我可能不会像这样使用HBase。但如果您必须锁定该行,请阅读并根据需要进行更新 - 请阅读有关锁定及其一些问题的更多信息,网址为http://www.ngdata.com/hbase-row-locks/。再次,我会尝试重新考虑这种情况,例如HBase支持多个版本,因此您可以随时更新并在稍后进行排序(例如,在更新后运行的协处理器中) – 2013-04-15 16:29:35

+0

非常感谢您的链接,我会阅读它并看看我能否用这些信息解决问题。如果没有,我会考虑按照您的建议更改设计。 – Diego 2013-04-15 17:41:34