4

Cassandra(1.2.8)に接続するastyanaxを初めて使用します。[https://github.com/Netflix/astyanax] から astyanax を、[http://www.apache.org/dyn/closer.cgi?path=/cassandra/1.2.8/apache-cassandra-] から cassandra をダウンロードしました。 1.2.8-bin.tar.gz]。すべてが指示に基づいてインストール/ビルドされ、デフォルト設定 (conf/cassandra.yaml など) を保持します。サンプルコード [https://github.com/Netflix/astyanax/blob/master/astyanax-examples/src/main/java/com/netflix/astyanax/examples/AstCQLClient.java] を実行してみます。嫌なエラーが私を悩ませ続けます(Eclipseで表示されます):

原因: com.netflix.astyanax.connectionpool.exceptions.PoolTimeoutException: PoolTimeoutException: [host=127.0.0.1(127.0.0.1):9160, latency=5021(5021), attempts=1]接続待機中にタイムアウトしました

Cassandra デバッグ モードを有効にすると、ターミナルに次のように表示されます。

DEBUG 17:06:48,968 メッセージの処理中にスリフト トランスポート エラーが発生しました。org.apache.thrift.transport.TTransportException: 読み取れません。リモート側が閉じました。4 バイトを読み取ろうとしましたが、0 バイトしか取得できませんでした。(これは多くの場合、サーバー側の内部エラーを示しています。サーバー ログを確認してください。) org.apache.thrift.transport.TTransport.readAll(TTransport.java:86) で.readAll(TBinaryProtocol.java:378) org.apache.thrift.protocol.TBinaryProtocol.readI32(TBinaryProtocol.java:297) org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:204) org. apache.thrift.TBaseProcessor.process(TBaseProcessor.java:22) org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:199) で java.

強調するために、私は cassandra.yaml で何も変更しません (実際には、それらが何を意味するのかわかりません)。astyanax および cassandra-1.2.8 からのすべてのライブラリは、すべて Java プロジェクトにインポートされます。問題は、フレーム変換を介してフラッシュしようとすると接続がシャットダウンするためだと思います...私はデータベースの初心者です。私はすべての助けに感謝します!

ps。私はスタックオーバーフローを待っています。確認する必要があるログがあれば (それを見つけるためのディレクトリも教えてください。私は初心者です>_<)、言ってください。取得します。どうもありがとう!!

4

1 に答える 1

1

これは古い質問であり、私の提案が誰かに役立つかどうかはわかりませんが、同じエラーに直面しました。これが解決方法です。うまくいけば、これは別の貧しい魂を助けるでしょう.

「リモート側が閉じられていることを読み取れません」という同じエラーが表示されましたが、csharp、Apache.Cassandra 名前空間、Thrift.dll を使用していました。

以下は作業スニペットです。

    TSocket socket = null;
    TTransport transport = null;

    socket = new TSocket("localhost", 9160);


    transport = new TFramedTransport(socket);
    TProtocol protocol = new TBinaryProtocol(transport);
    CassandraClient cassandraClient = new CassandraClient(protocol);
    cassandraClient.InputProtocol.Transport.Open();

トリックは、cassandraClient.InputProtocol.Transport.Open(); を使用することでした。transport.open() ではなく

于 2014-08-03T16:42:10.677 に答える