【问题标题】:Limitation in Cassandra-0.8.1 when using batch mutation使用批量突变时 Cassandra-0.8.1 中的限制
【发布时间】:2011-07-14 03:17:12
【问题描述】:

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

  • 密钥:url的md5,utf-8
  • SuperColumnName:日期,utf-8
  • ColumnName:计数器名称是1到200之间的随机数,
  • 列值: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 日志的错误信息显示,重复的操作只有相同的 key,SuperColumnName 不一样,对于计数器名称集,有的冲突有相交,有的没有。

我正在使用 Cassandra 0.8.1 和 hector 0.8.0-rc2

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

【问题讨论】:

    标签: cassandra hector


    【解决方案1】:

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

    宾果游戏。您需要将来自同一个键的操作组合成一个突变。

    【讨论】:

    • 不是这个原因,因为我可以通过相同的突变插入一些具有相同键的计数器。异常信息真的很混乱,它只会引发一些冲突。
    • 不,这是正常的原因。 :) Hector 可能会尝试为您合并突变,我不知道。但确保每行只有一个突变将 100% 解决此问题。
    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 2011-02-22
    • 2016-04-14
    • 2011-10-28
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多