【问题标题】:Error while trying to connect to cassandra through hector API尝试通过 hector API 连接到 cassandra 时出错
【发布时间】:2013-05-21 11:00:02
【问题描述】:

我已经编写了用于从 cassandra 读取记录的 java 代码。但它给出了运行时错误.. 这是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 系统。 线程“主”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.main(HectorConnect.java:30)

谁知道解决这个问题??

【问题讨论】:

  • 您使用了错误版本的 jar 文件。

标签: java cassandra


【解决方案1】:

当您的 apache-casssandra-thrift jar 版本不正确时,会发生这种情况。您应该确保 Hector 提供的版本是您的 CLASSPATH 中唯一的版本。

这个 jar 也作为 Cassandra 下载的一部分打包并放置在 lib 目录中。

【讨论】:

    【解决方案2】:

    您还没有指定您使用的赫克托版本。请尝试以下组合:

         <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>
    

    【讨论】:

      猜你喜欢
      • 2012-06-21
      • 2023-04-02
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 2020-02-15
      • 2021-04-19
      • 2020-10-19
      相关资源
      最近更新 更多