2016-08-02 6 views
1

私は "count(*)from users;"を試しています。私は "OperationTimedOut:errors = {}、last_host = 127.0.0.1"を取得しています。私はcqlshでこれを試しています。 cqlshとcassandraのバージョンは以下の通りです。Cassandra:OperationTimedOut:errors = {}、last_host = 127.0.0.1

cqlsh 5.0.1 | Cassandra 3.0.8

私はstackoverflowでいくつかの解決策を見つけました。しかし、誰も働いていません。私は以下を試した。ファイルカサンドラ/ confに/ cassandra.yamlで

  1. 私はいくつかrequest_time_out設定を増加し、よりカサンドラ
  2. は、私は、[接続]をフォルダ.cassandraにファイルcqlshrcを作成し、そのファイルに以下の

    を追加し、再起動

    client_timeout = 2000000

  3. stackoverflowの中
  4. 少数のソリューションは、ファイルcqlshにおけるいくつかのタイムアウトフィールドを高めるために示唆されているが、ファイル '/ cassandra/bin/cqlsh'にはそのようなフィールドがないので、そのファイルでは何も変更しませんでした。 cqlshファイルの内容は以下のとおりです

python -c 'import sys; sys.exit(ない(0x020700b0 < sys.hexversion < 0x03000000))」2>を/ dev/null \ & &幹部のpython "python -c "import os;print(os.path.dirname(os.path.realpath('$0')))" /cqlsh.py" "2.7でpyverのための$ @" 。 これのpython $ pyver>を/ dev/null 2> &幹部のpythonの$ pyver "python$pyver -c "import os;print(os.path.dirname(os.path.realpath('$0')))" /cqlsh.py" "見つかりませ適切なPythonインタプリタを" エコーなかっ行わ の "$ @を行います。" > exit 1

解決してください。

答えて

3

Cassandraサーバーが正常に動作している場合、サーバーが要求を処理できないため、タイムアウト例外が発生します。 'users'テーブルが大きすぎますか?

大きなテーブルをカウントする1つの方法は、別のテーブルの 'カウンタ'タイプを使用することです。

たとえば、私たちはこのようなテーブルを作成することができます。

CREATE TABLE custom_counters 
    (name varchar, 
    count counter, 
    PRIMARY KEY (name) 
); 

我々は「ユーザ」テーブルにユーザーを挿入するたびに、私たちは「custom_counters」テーブルにそのカウンターを更新:

UPDATE custom_counters 
    SET count = count + 1 
    WHERE name='users'; 

だから、私たちはユーザーの数を知っておく必要がある場合、我々はそのフィールドを要求する必要があります。

SELECT count FROM custom_counters WHERE name = 'users'; 

詳細情報彼再:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html

+0

ユーザーテーブルは約25 GBです。 –

+0

私は、25 GBは 'count'コマンドにはあまりにも多くの行があると思います。 – JSierra

関連する問題