Hbase Atomic 读取并删除一行

Hbase Atomic read and delete a row

我们正在使用 hbase table 作为大队列。许多客户端可以插入其中,并且许多客户端想要从中读取数据。问题是互斥。在一个客户端读取数据直到删除它的跨度内,另一个客户端也可以读取它!但是我们要确保每一行 return 给一个且只有一个客户。

我应该提到我们正在使用 Java hbase 客户端。

是否有类似自动获取和删除行或在 hbase 中获取和更新的方法,或者可以处理这种情况的方法?

我找到了 RowLock 机制,但它已被弃用并且不再存在。还有一个使用 zookeeper 的分发锁,但它似乎效率不高。

提前致谢。

试试这个方法

  1. 获取所需的行。签入 java 未被一一使用的代码(特定列==0)。
  2. 检查该行是否存在且未被任何人使用。如果是,则标记它(即,将列值从 0 增加到 1)x。所有这些都可以通过 checkAndPut
  3. 来完成
  4. 使用 checkAndDelete 删除行。