HBase:当 HTableInterface.batch returns 时,更改已应用还是刚刚排队?
HBase : when HTableInterface.batch returns, have changes been applied or just queued?
我们正在使用 0.94.6-cdh4.5.0 Java 客户端。
batch
方法 returns 和 Object[]
指示 success/failure 用于该批次中的各个请求。 "success" 是否保证更改已成功应用于主数据存储,或者只是它已在服务器端经过验证并排队以供将来提交?换句话说,在 batch
returns 成功之后 立即 访问作为批处理的一部分写入的数据是否可靠安全?
我有两个原因要问:
- 我们最近遇到了一个操作问题,其中 看起来 好像一堆
batch
调用未能 "take" 而没有报告该事实。我想排除我们使用 API 错误的可能性。
- 我们有一次被迫等待。我认为这只是使用
put
和 flushCommits
而不是 batch
的旧版本系统的遗留问题,我想删除它。
访问刚刚写入的数据是安全的,看看这个:http://hbase.apache.org/acid-semantics.html
可见度
当客户端收到对任何变更的 "success" 响应时,该变更立即对该客户端以及随后通过侧通道与之通信的任何客户端可见。
我们正在使用 0.94.6-cdh4.5.0 Java 客户端。
batch
方法 returns 和 Object[]
指示 success/failure 用于该批次中的各个请求。 "success" 是否保证更改已成功应用于主数据存储,或者只是它已在服务器端经过验证并排队以供将来提交?换句话说,在 batch
returns 成功之后 立即 访问作为批处理的一部分写入的数据是否可靠安全?
我有两个原因要问:
- 我们最近遇到了一个操作问题,其中 看起来 好像一堆
batch
调用未能 "take" 而没有报告该事实。我想排除我们使用 API 错误的可能性。 - 我们有一次被迫等待。我认为这只是使用
put
和flushCommits
而不是batch
的旧版本系统的遗留问题,我想删除它。
访问刚刚写入的数据是安全的,看看这个:http://hbase.apache.org/acid-semantics.html
可见度
当客户端收到对任何变更的 "success" 响应时,该变更立即对该客户端以及随后通过侧通道与之通信的任何客户端可见。