1

当我尝试使用 pelops api 将数据插入 cassandra 时出现以下错误

 java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V

我正在使用以下罐子

  1. scale7-core-1.3.0.jar
  2. scale7-pelops-0.912-0.7.0-rc4-1.jar
  3. cassandra-1.0.5的lib目录下的所有jar

调用以下函数会导致异常

public void writeToBatch(String columnFamily, String rowKey, String colmName,String value, int ttl)
 {
     this.mutator.writeColumn(columnFamily, rowKey,
                mutator.newColumn(colmName, value, ttl));
 }

错误堆栈如下:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V
    at org.scale7.cassandra.pelops.Mutator.newColumn(Mutator.java:625)
    at org.scale7.cassandra.pelops.Mutator.newColumn(Mutator.java:562)
    at com.audienceadnetwork.cassandra.sstablewriter.utils.PelopsClient.writeToBatch(Unknown Source)
4

1 回答 1

4

您正在混合针对 cassandra-1.0.5 构建的节俭绑定与针对更旧的节俭绑定构建的 pelops 版本。api 本身是向后兼容的,但你不能像这样混合绑定。你有两个选择:

最好的选择可能是升级到更新版本的 pelops。根据 github:https ://github.com/s7/scale7-pelops,1.0.x 版本有可用的快照版本。

如果由于某种原因您需要使用上面使用的 pelops 版本,那么您还需要使用该版本所依赖的 cassandra thrift 绑定,而不是针对 cassandra 1.0.5 构建的绑定。

于 2011-12-06T16:23:01.653 回答