当我进行批量突变时,我发现了 cassandra 的一些例外情况,它说“已经在这个突变中进行了修改”,但给出的信息是两个不同的操作。在这种情况下,我使用带计数器的超级列,就像
- 关键:网址的md5,utf-8
- SuperColumnName:日期,utf-8
- ColumnName:计数器名称是1到200之间的随机数,
- 柱值:1L
大号
public void SuperCounterMutation(ArrayList<String> urlList) {
LinkedList<HCounterSuperColumn<String, String>> counterSuperColumns;
for(String line : urlList) {
String[] ele = StringUtils.split(StringUtils.strip(line), ':');
String key = ele[0];
String SuperColumnName = ele[1];
LinkedList<HCounterColumn<String>> ColumnList = new LinkedList<HCounterColumn<String>>();
for(int i = 2; i < ele.length; ++i) {
ColumnList.add(HFactory.createCounterColumn(ele[i], 1L, ser));
}
mutator.addCounter(key, ColumnFamilyName, HFactory.createCounterSuperColumn(SuperColumnName, ColumnList, ser, ser));
++count;
if(count >= BUF_MAX_NUM) {
try {
mutator.execute();
} catch(Exception e) {
e.printStackTrace();
}
mutator = HFactory.createMutator(keyspace, ser);
count = 0;
}
}
return;
}
来自 cassandra 日志的错误信息显示,重复的操作只有相同的 key,SuperColumnName 不一样,对于计数器名称集,一些冲突有相交,有的没有。
我正在使用 Cassandra 0.8.1 和 hector 0.8.0-rc2
谁能告诉我这个问题的原因?提前致谢!