Кассандра-Пелопс: Ошибка "Нет такого метода" при попытке вставить данные в Кассандру

Я получаю следующую ошибку, когда я пытаюсь вставить данные в Cassandra с помощью Pelops API

 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-Pelops-0.912-0.7.0-rc4-1.jar
  3. Все банки в директории lib cassandra-1.0.5

Вызов следующей функции вызывает исключение

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 ответ

Решение

Вы смешиваете привязки сбережений, построенные против cassandra-1.0.5, с версией pelops, созданной против гораздо более старых привязок сбережений. Сам API обратно совместим, но вы не можете смешивать привязки, как это. У вас есть два варианта:

Наилучшим вариантом, вероятно, является обновление до более новой версии pelops. Для версий 1.0.x доступны версии моментальных снимков в соответствии с их github: https://github.com/s7/scale7-pelops.

Если по какой-то причине вам нужно использовать версию pelops, использованную выше, тогда вам также нужно использовать привязки к касандре, от которых зависит версия, а не те, которые созданы против cassandra 1.0.5.

Другие вопросы по тегам