2

ユーザー名、パスワード、電子メール、および電話番号を格納するための単純な cassandra データベースにデータを挿入しようとして丸一日を費やしました。私が行ったすべての調査は、http://hector-client.github.com/hector/build/html/content/getting_started.html#updateに戻ってきます。例を文字どおりに実行しましたが、コードを実行しようとすると:

        ConfigurableConsistencyLevel ccl = new ConfigurableConsistencyLevel();
    Map<String, HConsistencyLevel> clm = new HashMap<String, HConsistencyLevel>();

    clm.put("customers", HConsistencyLevel.ONE);
    ccl.setReadCfConsistencyLevels(clm);
    ccl.setWriteCfConsistencyLevels(clm);
    Cluster cluster = HFactory.getOrCreateCluster("test-cluster", "localhost:9160");     

    Keyspace ksp = HFactory.createKeyspace("qualebs", cluster);
    ksp.setConsistencyLevelPolicy(ccl);

    ColumnFamilyTemplate<String, String> template = new ThriftColumnFamilyTemplate<String, String>(ksp, "customers", StringSerializer.get(), StringSerializer.get());

    ColumnFamilyUpdater<String, String> updater = template.createUpdater("KeyIsUsername");
    updater.setString("name", "the name");
    updater.setString("email", "email@email.com");
    template.update(updater);

アプリケーションを実行しようとすると、次の例外が発生します。

Caused by: InvalidRequestException(why:Not enough bytes to read value of component 0)
at org.apache.cassandra.thrift.Cassandra$batch_mutate_result.read(Cassandra.java:20833)
at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:78)
at org.apache.cassandra.thrift.Cassandra$Client.recv_batch_mutate(Cassandra.java:964)
at org.apache.cassandra.thrift.Cassandra$Client.batch_mutate(Cassandra.java:950)
at me.prettyprint.cassandra.model.MutatorImpl$3.execute(MutatorImpl.java:246)
at me.prettyprint.cassandra.model.MutatorImpl$3.execute(MutatorImpl.java:243)
at me.prettyprint.cassandra.service.Operation.executeAndSetResult(Operation.java:104)
at me.prettyprint.cassandra.connection.HConnectionManager.operateWithFailover(HConnectionManager.java:258)
... 57 more

このエラーの理由を理解するのに助けが必要です。

cqlsh ターミナルから作成したスキーマは次のようになります

 CREATE TABLE customers(username text PRIMARY KEY, name text, email text);
4

1 に答える 1

1

もう1つのオプションは、正しい変換を行い、CFも作成するplayOrmを試すことです。そのため、間違って作成することを心配する必要はありません;)。ただのオプションです。

PlayOrmのホームページまたはGitHubからフレームワークを入手してください。

于 2013-03-08T13:39:11.500 に答える