Hbase Atomic 读取并删除一行
Hbase Atomic read and delete a row
我们正在使用 hbase table 作为大队列。许多客户端可以插入其中,并且许多客户端想要从中读取数据。问题是互斥。在一个客户端读取数据直到删除它的跨度内,另一个客户端也可以读取它!但是我们要确保每一行 return 给一个且只有一个客户。
我应该提到我们正在使用 Java hbase 客户端。
是否有类似自动获取和删除行或在 hbase 中获取和更新的方法,或者可以处理这种情况的方法?
我找到了 RowLock 机制,但它已被弃用并且不再存在。还有一个使用 zookeeper 的分发锁,但它似乎效率不高。
提前致谢。
试试这个方法
- 获取所需的行。签入 java 未被一一使用的代码(特定列==0)。
- 检查该行是否存在且未被任何人使用。如果是,则标记它(即,将列值从 0 增加到 1)x。所有这些都可以通过 checkAndPut
来完成
- 使用 checkAndDelete 删除行。
我们正在使用 hbase table 作为大队列。许多客户端可以插入其中,并且许多客户端想要从中读取数据。问题是互斥。在一个客户端读取数据直到删除它的跨度内,另一个客户端也可以读取它!但是我们要确保每一行 return 给一个且只有一个客户。
我应该提到我们正在使用 Java hbase 客户端。
是否有类似自动获取和删除行或在 hbase 中获取和更新的方法,或者可以处理这种情况的方法?
我找到了 RowLock 机制,但它已被弃用并且不再存在。还有一个使用 zookeeper 的分发锁,但它似乎效率不高。
提前致谢。
试试这个方法
- 获取所需的行。签入 java 未被一一使用的代码(特定列==0)。
- 检查该行是否存在且未被任何人使用。如果是,则标记它(即,将列值从 0 增加到 1)x。所有这些都可以通过 checkAndPut 来完成
- 使用 checkAndDelete 删除行。