Cassandra-Pelops:尝试将数据插入cassandra时出现No Such Such错误

时间:2011-12-06 15:41:23

标签: jar cassandra nosuchmethoderror hector pelops

当我尝试使用pelops api

将数据插入cassandra时,我遇到以下错误
 java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V

我正在使用以下罐子

  1. scale7核-1.3.0.jar
  2. scale7-贝洛布思-0.912-0.7.0-rc4-1.jar
  3. cassandra-1.0.5
  4. 的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)
    

1 个答案:

答案 0 :(得分:4)

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

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

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