使用批量突变时Cassandra-0.8.1的限制

时间:2011-07-13 07:51:52

标签: cassandra hector

当我进行批量突变时,我发现了cassandra的一些例外,它说“已经对这种突变进行了修改”,但给出的信息是两种不同的操作。 在这种情况下,我使用Super列和计数器,就像

  • Key:urd的md5,utf-8
  • SuperColumnName:date,utf-8
  • ColumnName:计数器名称是1到200之间的随机数,
  • ColumnValue:1L

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

谁能告诉我这个问题的原因?提前谢谢!

1 个答案:

答案 0 :(得分:2)

  

来自cassandra日志的错误信息显示重复的操作具有相同的密钥

宾果。您需要将来自同一密钥的操作组合成单个变异。