2

cassandra DB に値を挿入するために hector を使用しています。私は Eclipse helios IDE と Cassandra バージョン 1.1.2 を使用しており、クラスパスに次の jar がインポートされています。

  • Apache-カサンドラ-1.1.2.jar
  • ヘクター-コア-0.7.0.29.jar
  • libthrift-0.8.0.jar
  • slf4j-api-1.6.6.jar

互換性の問題か、コードの混乱のどちらかです。

別のバージョンの jar を使用してみましたが、うまくいきませんでした。以下はコード スニペットです。

助けてください。

int count = 0;
StringSerializer ss = StringSerializer.get();
String cf = "TESTING";
CassandraHostConfigurator conf = new CassandraHostConfigurator("10.100.10.177:8160");
System.out.println("host configured..");

conf.setCassandraThriftSocketTimeout(40000);
conf.setExhaustedPolicy(ExhaustedPolicy.WHEN_EXHAUSTED_BLOCK);
conf.setRetryDownedHostsDelayInSeconds(5);
conf.setRetryDownedHostsQueueSize(128);
conf.setRetryDownedHosts(true);
conf.setLoadBalancingPolicy(new LeastActiveBalancingPolicy());
String key = Long.toString(System.currentTimeMillis());
Cluster cluster = HFactory.getOrCreateCluster("Test Cluster", conf);
Keyspace keyspace = HFactory.createKeyspace("Testing", cluster);
Mutator<String> mutator = HFactory.createMutator(keyspace, StringSerializer.get());

while (!"q".equals(new Scanner(System.in).next().toString())) {
    try {
        mutator.insert(key, cf, HFactory.createColumn("column_" + count, "v_" + count, ss, ss));
        mutator.execute();
        count++;
    } catch (Exception e) {
        e.printStackTrace();
    }
}

これは、ループなしで単一の値を挿入したときに発生する例外です。

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.cassandra.thrift.Column.<init>(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;J)V
at me.prettyprint.cassandra.model.HColumnImpl.<init>(HColumnImpl.java:36)
at me.prettyprint.hector.api.factory.HFactory.createColumn(HFactory.java:477)
at me.prettyprint.hector.api.factory.HFactory.createStringColumn(HFactory.java:488)
at ExampleDaoV2.main(ExampleDaoV2.java:66)
4

1 に答える 1

1

libthrift以外の別のthriftjarファイルを使用してみてください。それがうまくいくかどうか教えてください。

于 2012-08-18T00:29:44.600 に答える