Pregunta

Estoy recibiendo el siguiente error cuando intento insertar datos en Cassandra usando Pelops API

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

Estoy usando frascos siguientes

  1. Scale7-Core-1.3.0.Jar
  2. Scale7-Pelops-0.912-0.7.0-rc4-1.Jar
  3. Todos los frascos en el directorio lib de Cassandra-1.0.5

Llamar a la siguiente función causa una excepción

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

La pila de errores es la siguiente:

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)
¿Fue útil?

Solución

Estás mezclando las fijaciones de ahorro construidas contra Cassandra-1.0.5 con una versión de Pelops construidas contra enlaces de segunda mano mucho más antiguos. La API en sí es compatible con versiones anteriores, pero no puedes mezclar ataduras como esta. Tienes dos opciones:

La mejor opción es probablemente actualizar a una versión más nueva de Pelops. Hay versiones de instantáneas disponibles para las versiones 1.0.X de acuerdo con su GitHub: https://github.com/s7/scale7-pelops.

Si por alguna razón necesita usar la versión de Pelops utilizadas anteriormente, entonces también necesita usar los enlaces de segunda mano de Cassandra de la que depende de la versión, en lugar de las construidas contra Cassandra 1.0.5.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top