当我更新该行中包含几个计数器列的行时,我需要这样做:
mutator.incrementCounter(rowid1, "cf1", "counter1", value);
mutator.incrementCounter(rowid1, "cf1", "counter2", value);
mutator.incrementCounter(rowid1, "cf1", "counter3", value);
如何在1次更新中完成上述3项操作?因为我不想打三次数据库。我只想打1次数据库。另外,我使用incrementCounter的原因是具有很强的一致性(incrementCounter比addCounter更一致)。你能为它提供一些代码吗?谢谢!
答案 0 :(得分:1)
我问你到目前为止做了什么研究,因为在我看来你没有做任何研究。我通常会在这一点上走开,但出于某种原因,无论如何我都会选择回答。
让我们查看Mutator
documentation。它始于:
Mutator插入或删除群集中的值。使用mutator有两种主要方法:1。使用insert / delete方法立即插入删除值。或2.使用addInsertion / addDeletion方法安排批处理操作,然后批量执行()所有这些操作。该类不是线程安全的。
类摘要说Mutator
支持在一个批处理中执行多个操作,并指向add*
方法来执行此操作。 (您使用“批处理”标记了您的问题,因此您知道这是您需要的功能。)类摘要下的第一件事是addCounter()
函数,描述为:
通过Mutator.execute()
计划要以批处理模式插入的CounterColumn的增量
问题解决了。
或者,您可以使用IDE来浏览当前的代码,但这样做效率很低。 incrementCounter()
调用中可用的单行摘要表明它是一种便捷方法,强烈建议还有其他增加计数器的方法。浏览Mutator
界面即使只是自动完成,也会很快引导您addCounter()
,因为只有少数与计数器相关的功能,addCounter()
按字母顺序排在第一位。
如果您希望完全忽略文档,第三种选择是直接进入the incrementCounter()
implementation。很快就会发现incrementCounter()
为addCounter()
,然后是execute()
。
通过这些方法中的任何一种,您都可以通过多次调用addCounter()
后跟一个execute()
来一次增加多个计数器。
第四个选项当然是直接进入Stack Overflow并要求代码。这通常会将您发送到whathaveyoutried.com,并且只会偶尔为您提供答案,例如详细解释您可以回答自己问题的所有方式。我现在将以该文章的片段结束我的回复:
问题是这个人解决问题的方法是要求解决方案。不是寻求关于如何处理任务的建议,或者询问可能要查看的类的名称,或者是示例的链接 - 而是要求代码完全形成并准备好。这不是问题解决,软件工程完全是解决问题。
答案 1 :(得分: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()