我遇到一个小问题 - 我无法理解如何在HBase中创建交易(或模拟交易)。例如,有两个表,我想在第一个表中插入值,在第二个表中插入更新值。我发现HTable有方法:
void batch(List<Row> actions, Object[] results)
//Method that does a batch call on Deletes, Gets and Puts.
但它仅适用于一个表。谷歌搜索,我找到了课程MultiAction:
操作的容器(即获取,删除或放置),按组分组 regionName。旨在与HConnectionManager.processBatch()
一起使用
这就是我要找的东西吗?如果是,那么我无法理解什么是region。 谢谢你的帮助。
答案 0 :(得分:4)
HBase不支持交易。 虽然你在单个表上有一些原子性,如果你需要更新多个,你就会注意到事务。 交易意味着按首字母缩写词ACID发出的4件事。简而言之
您必须更改HBase代码以获得隔离,但如果您可以放宽该要求,您可以实现一个大致会执行类似
的事务协调器请注意,因为您没有隔离,有时回滚不是一个选项,因此您需要实现补偿逻辑(另请参阅saga pattern)
答案 1 :(得分:2)
有些项目旨在提供HBase之上的交易层,例如Omid,我参与其中。