如何在HBase协处理器中检测行更新?
我试图在RegionObserver的postPut()函数中找出它,但是即使没有更改值,也会在每个put请求中调用它。
假设这是一系列操作:
put' testTable',' row2',' cf:f1',' val1'
put' testTable',' row2',' cf:f1',' val1'
所以,我想检测何时发生操作1和3,即第一次添加行时以及何时更改值。不会再次推送相同的值。
有没有什么方法可以让我在postPut()函数中得到单元格的旧值?并将其与新价值进行比较。
答案 0 :(得分:1)
我会在预先放置并查找协处理器区域中的记录。如果记录是新的,它不应该执行物理I / O,因为布隆过滤器在99%的时间都是正确的。
我们在Splice Machine(开源)上进行了一些优化,我们直接访问bloom过滤器以绕过扫描中的同步。您可以查看我们的github网站https://github.com/splicemachine/spliceengine并搜索此类和方法HRegionUtil.keyExists()。
祝你好运。