-
Notifications
You must be signed in to change notification settings - Fork 24
批量操作接口
IHEII edited this page Jul 27, 2023
·
5 revisions
批量操作OBKV可以保证单分区的一致性,即如果您在batch中添加多个不同分区的Mutation,他们并不能保证同时成功或者失败. 如果您对一致性有很高的要求,您可以在上层通过区分分区键来使batch只执行单分区批量操作从而达到分区级的一致性.
通过批量操作接口,可以一次性执行多个 Mutation:
// 构造单行操作
Insert insert_0 = insert().setRowKey(row(colVal("c1", 0L), colVal("c2", "row_0")))
.addMutateColVal(colVal("c3", new byte[]{1}))
.addMutateColVal(colVal("c4", 100L));
Insert insert_1 = insert().setRowKey(row(colVal("c1", 4L), colVal("c2", "row_4")))
.addMutateColVal(colVal("c3", new byte[]{1}))
.addMutateColVal(colVal("c4", 104L));
Update update_0 = update().setRowKey(row(colVal("c1", 4L), colVal("c2", "row_4")))
.addMutateColVal(colVal("c3", new byte[]{1}))
.addMutateColVal(colVal("c4", 204L));
// 批量执行所有单行操作
BatchOperationResult batchResult = client.batchOperation("test_mutation")
.setIsAtomic(true) // 为保证单分区执行出错数据一致性,强烈推荐设置为true
.addMutation(insert_0)
.addMutation(insert_1, update_0)
.execute();
// 打印结果
for (int idx : batchResult.size()) {
System.out.println(String.format("the %dth mutation affect %d rows", idx,
batchResult.get(idx).getAffectedRows()));
}