Hbase仅在更改时更新
我有一个用例,需要检查Hbase put是否实际写入了更改的值 我做了家庭作业,知道checkAndPut方法,但这并不能真正解决问题:Hbase仅在更改时更新,hbase,updates,Hbase,Updates,我有一个用例,需要检查Hbase put是否实际写入了更改的值 我做了家庭作业,知道checkAndPut方法,但这并不能真正解决问题: 我在客户端得到了一个值,它可能是对Hbase中最新值的更改,也可能不是 如果这不是一个改变,我宁愿不写它 使用checkAndPut,我只能检查客户端值和服务器端值是否相等 如果为true,则checkAndPut将执行Put 我可以想出两种解决方案,都不是很吸引人: 从HBase获取最新值后,在客户端执行预输入检查(2次往返) 如上所述执行checkAn
- 我在客户端得到了一个值,它可能是对Hbase中最新值的更改,也可能不是
- 如果这不是一个改变,我宁愿不写它
- 使用checkAndPut,我只能检查客户端值和服务器端值是否相等
- 如果为true,则checkAndPut将执行Put
有没有办法扭转checkAndPut逻辑,只有在比较失败时才立即执行Put?或者甚至是一种不同的方法来解决这个问题?对于仍在寻找的人来说:
从Hbase版本开始生效:
0.98.7、0.99.1
您可以使用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);
}