Thanks for the info. I was hoping to batch my get and put calls for greater efficiency, but this operation requires them to be run in order. Sounds like batching is not an option.
--Jeremy On Fri, Mar 14, 2014 at 2:16 AM, 冯宏华 <[email protected]> wrote: > your understanding of batch is correct, multiple put() and get() against a > same region in a single batch() operation will be executed as multiple sub > steps, all operations on the same region are iterated one by one, the get() > will be executed immediately and serially, while the put() will be > accumulated as iterated first(batched and delayed) and then executed in a > batch fashion after all mutations are collected, so you can assume the > get() always can't get the result of put() in the same batch()... > > IMHO, seems the only way to guarantee multiple get() and put() be executed > in the order you provide is to execute them serially where the latter is > always issued after the former is returned successfully. > ________________________________________ > 发件人: jeremy p [[email protected]] > 发送时间: 2014年3月14日 6:39 > 收件人: [email protected] > 主题: How to pass multiple operations to HBase and be guaranteed of > execution order > > Hello all, > > The documentation for htable.batch() warns us : > > "The execution ordering of the actions is not defined. Meaning if you do a > Put and a Get in the same batch() call, you will not necessarily be > guaranteed that the Get returns what the Put had put." > > Is there a way to pass multiple get() and put() calls to HBase and be > guaranteed that they will be executed in the order that you provide? > > --Jeremy >
