Я нашел некоторые исключения из cassandra, когда я выполняю пакетную мутацию, он сказал, что «уже есть модификации в этой мутации», но данная информация представляет собой две разные операции. В этом случае я использую столбец Super со счетчиками, это как
- Ключ: md5 URL, utf-8
- SuperColumnName: дата, utf-8
- ColumnName: имя счетчика представляет собой случайное число от 1 до 200,
- Значение столбца: 1 л
L
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 показала, что дублированные операции имеют только один и тот же ключ, SuperColumnName не совпадают, а для набора имени счетчика некоторые конфликты пересекаются, а некоторые нет.
Я использую Cassandra 0.8.1 с hector 0.8.0-rc2.
Может ли кто-нибудь сказать мне причину этой проблемы? Заранее спасибо!