【问题标题】:HBase Coprocessor Row Update DetectionHBase 协处理器行更新检测
【发布时间】:2016-09-09 13:19:46
【问题描述】:

如何检测 HBase 协处理器中的行更新?

我试图在 RegionObserver 的 postPut() 函数中找出它,但即使值没有更改,它也会在每个 put 请求中调用。

假设这是一系列操作:

  1. 把'testTable','row2','cf:f1','val1'

  2. 把'testTable','row2','cf:f1','val1'

  3. 输入'testTable','row2','cf:f1','val2'

所以,我想检测操作 1 和 3 何时发生,即第一次添加行以及更改值的时间。再次推送相同的值时不会。

有什么方法可以让我在 postPut() 函数中获取 cell 的旧值?并将其与新值进行比较。

【问题讨论】:

    标签: hbase


    【解决方案1】:

    我会在协处理器区域中预先放置并查找记录。如果记录是新的,它不应该执行物理 I/O,因为布隆过滤器 99% 的时间都是正确的。

    我们在 Splice Machine(开源)进行了一些优化,我们直接访问布隆过滤器以绕过扫描中的同步。您可以查看我们的 github 站点 https://github.com/splicemachine/spliceengine 并搜索此类和方法 HRegionUtil.keyExists()。

    祝你好运。

    【讨论】:

    • 但是,在 prePut() 中执行此操作会降低 HBase 的性能,因为在检测到这些更新后我正在执行一项繁重的任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2013-08-03
    • 2013-01-10
    • 2012-12-13
    相关资源
    最近更新 更多