我有一个用例,我需要检查Hbase Puts是否实际上是在写更改值。
我完成了我的作业并知道checkAndPut方法,但这并没有真正解决问题:
我可以想到两种解决方案,两者都不太吸引人:
有没有办法在比较失败时立即关闭checkAndPut逻辑并立即执行Put?或者甚至是解决这个问题的不同方法?
答案 0 :(得分:1)
为了仍在寻找的人的利益:HTable#checkAndPut
从Hbase版本生效:0.98.7, 0.99.1
答案 1 :(得分:0)
您可以使用Hbase 1.1.8中引入的新checkandPut
如果您希望仅更新不同的值,则可以使用比较器NOT_EQUAL
public void write(final byte[] row, final byte[] family, final byte[] qualifier, final byte[] value, final Put put) throws IOException {
CompareFilter.CompareOp compareOp = CompareFilter.CompareOp.NOT_EQUAL;
this.table.checkAndPut(row,family,qualifier,compareOp,value,put);
}