当我尝试使用pelops api
将数据插入cassandra时,我遇到以下错误 java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V
我正在使用以下罐子
调用以下函数会导致异常
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)
答案 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构建的绑定。