0

当我用该行中的几个计数器列更新一行时,我需要这样做:

mutator.incrementCounter(rowid1, "cf1", "counter1", value);
mutator.incrementCounter(rowid1, "cf1", "counter2", value);
mutator.incrementCounter(rowid1, "cf1", "counter3", value);

我如何在 1 次更新中完成以上所有 3 项?因为我不想击中数据库 3 次。我只想访问数据库 1 次。另外,我使用incrementCounter的原因是为了具有强一致性(incrementCounter比addCounter更一致)。你能提供一些代码吗?谢谢!

4

2 回答 2

1

我问你到目前为止做了什么研究,因为在我看来你没有做任何研究。我通常会在这一点上走开,但出于某种原因,我还是选择回答。


让我们查一下Mutator文档。它开始于:

Mutator 从集群中插入或删除值。使用 mutator 主要有两种方法: 1. 使用 insert/delete 方法立即插入删除值。或 2. 使用 addInsertion/addDeletion 方法安排批处理操作,然后批量执行()所有这些操作。该类不是线程安全的。

类摘要说Mutator支持在单个批处理中执行多个操作,并为您指出了执行此操作的add*方法。(你用“batch”标记你的问题,所以你知道这是你需要的功能。)类摘要下的第一件事是addCounter()函数,描述为:

计划通过 Mutator.execute() 以批处理模式插入 CounterColumn 的增量

问题解决了。

或者,您可以使用您的 IDE 来探索您当前的代码,该代码有效但效率低下。调用中可用的单行摘要incrementCounter()说这是一种方便的方法,强烈建议还有其他方法可以增加计数器。Mutator即使只使用自动完成功能也可以快速浏览界面addCounter(),因为只有少数与计数器相关的功能,并且addCounter()按字母顺序排在第一位。

如果您更愿意完全忽略文档,第三种选择是直接进入incrementCounter()实现incrementCounter()很快就显露出来,addCounter()紧随其后execute()

这些方法中的任何一种都可以让您得出结论,您可以通过多次调用addCounter()后跟单个execute().


当然,第四个选项是直接来到 Stack Overflow 并索要代码。这通常会将您发送到whathaveyoutried.com,并且只是偶尔会为您提供答案,例如这个详细解释您可以回答自己问题的所有方式的答案。我现在将用那篇文章的一个片段来结束我的回复:

问题在于这个人解决问题的技巧是寻求解决方案。不是寻求关于如何处理任务的建议,或者询问可能要研究的类的名称,或者一个示例的链接——而只是询问代码,完全形成并准备好使用。这不是解决问题,软件工程完全是解决问题。

于 2012-11-28T21:14:26.640 回答
0

如果您只想访问一次数据库,请尝试此操作

mutator.addCounter(rowid1, "cf1", HFactory.createCounterColumn("counter1", value))
mutator.addCounter(rowid1, "cf1", HFactory.createCounterColumn("counter2", value))
mutator.addCounter(rowid1, "cf1", HFactory.createCounterColumn("counter3", value))
query.execute()
于 2014-10-08T05:50:56.220 回答