Ошибка при попытке подключения к cassandra через API-интерфейс hector

52
7

Я написал код Java для чтения записей из cassandra. Но он дает ошибку во время выполнения. Вот код Java: -

import javax.naming.spi.DirStateFactory.Result;

import me.prettyprint.cassandra.serializers.StringSerializer;
import me.prettyprint.hector.api.*;
import me.prettyprint.hector.api.Cluster;
import me.prettyprint.hector.api.Keyspace;
import me.prettyprint.hector.api.beans.HColumn;
import me.prettyprint.hector.api.factory.HFactory;
import me.prettyprint.hector.api.mutation.Mutator;
import me.prettyprint.hector.api.query.ColumnQuery;
import me.prettyprint.hector.api.query.QueryResult;

public class HectorConnect {

public static void main(String args[]){

try{

Cluster c = HFactory.getOrCreateCluster("Test", "localhost:9160");
Keyspace ko = HFactory.createKeyspace("myspace", c);

StringSerializer se = StringSerializer.get();

ColumnQuery<String, String> q = HFactory.createColumnQuery(ko, se, se);

QueryResult<HColumn<String, String>> r = q.setKey("cara").
setName("customername").
setColumnFamily("customer").
execute();

}
catch(Exception e){
e.printStackTrace();
}
}
}

и ошибка, которую он бросает, выглядит следующим образом:

log4j: WARN Для регистратора не найдено никаких приложений (me.prettyprint.cassandra.service.CassandraClientPoolFactory). log4j: WARN Пожалуйста, правильно инициализируйте систему log4j. Исключение в потоке "main" java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Cassandra $ Client.describe_keyspaces() Ljava/util/Set; на me.prettyprint.cassandra.service.CassandraClientImpl.getKeyspaces(CassandraClientImpl.java:141) на me.prettyprint.cassandra.service.CassandraClientImpl.getKeyspace(CassandraClientImpl.java:114) на me.prettyprint.cassandra.service.CassandraClientImpl.getKeyspace(CassandraClientImpl.java:104) на me.prettyprint.cassandra.model.ExecutingKeyspace.doExecute(ExecutingKeyspace.java:57) на me.prettyprint.cassandra.model.thrift.ThriftColumnQuery.execute(ThriftColumnQuery.java:34) на HectorConnect. Основной (HectorConnect.java:30)

Кто-нибудь знает решение этого?

спросил(а) 2013-05-21T14:00:00+04:00 6 лет, 9 месяцев назад
1
Решение
85

Вы не указали версию hector, которую используете. Попробуйте следующую комбинацию:

     <dependency>
<groupId>me.prettyprint</groupId>
<artifactId>hector-core</artifactId>
<version>1.0-2</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>

ответил(а) 2013-05-21T14:16:00+04:00 6 лет, 9 месяцев назад
37

Это происходит, когда у вас неправильная версия apache-casssandra-trift jar. Вы должны убедиться, что версия, предоставляемая Hector, является единственной в вашем CLASSPATH.


Эта банка также упакована как часть загрузки Cassandra и помещена в каталог lib.

ответил(а) 2013-05-21T14:09:00+04:00 6 лет, 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема