2016-08-02 8 views
1

Ich versuche "Anzahl (*) von Benutzern auswählen;" auf Cassandra, aber nachdem ich 10 Sekunden gewartet habe, bekomme ich "OperationTimedOut: errors = {}, last_host = 127.0.0.1". Ich versuche das auf Cqlsh. Cqlsh und Cassandra Versionen sind unten.Cassandra: OperationTimedOut: Fehler = {}, last_host = 127.0.0.1

cqlsh 5.0.1 | Cassandra 3.0.8

Ich habe einige Lösungen auf Stackoverflow gefunden. Aber keiner von ihnen funktioniert. Ich habe es versucht.

  1. In Datei cassandra/conf/cassandra.yaml i erhöhte paar request_time_out Einstellungen und als neu gestartet, die cassandra
  2. I Datei cqlshrc in Ordnern .cassandra erstellt und unten in dieser

    [Verbindung] Datei hinzugefügt

    client_timeout = 2000000

  3. Wenige Lösung in Stackoverflow schlagen einige Timeout Feld in Datei cqlsh zu erhöhen, aber Die Datei '/ cassandra/bin/cqlsh' hat kein solches Feld, also habe ich an dieser Datei nichts geändert. cqlsh-Datei Inhalt ist unter

python -c 'import sys; sys.exit (nicht (0x020700b0 < sys.hexversion < 0x03000000))‘2>/dev/null \ & & exec Python "python -c "import os;print(os.path.dirname(os.path.realpath('$0')))" /cqlsh.py" "$ @" für pyver in 2.7; tun welcher Python $ pyver>/dev/null 2> & exec python $ pyver "python$pyver -c "import os;print(os.path.dirname(os.path.realpath('$0')))" /cqlsh.py" "$ @" getan echo "Kein entsprechendes Python-Interpreter gefunden." > Ausfahrt 1

Lösungen bitte.

Antwort

3

Wenn der Cassandra-Server ordnungsgemäß funktioniert, wird die Zeitüberschreitungsausnahme ausgelöst, da der Server die Anforderung nicht verarbeiten kann. Ist der Benutzertisch zu groß?

Eine Lösung zum Zählen großer Tabellen ist die Verwendung des Zählertyps in einer anderen Tabelle.

Zum Beispiel können wir eine Tabelle wie folgt erstellen:

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

Jedes Mal, wenn wir einen Benutzer in ‚Benutzer‘ Tabelle einfügen, wir seine Zähler in der ‚custom_counters‘ Tabelle aktualisieren:

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

wenn wir also die Anzahl der Benutzer wissen müssen, müssen wir das Feld anfordern:

SELECT count FROM custom_counters WHERE name = 'users'; 

Mehr Informationen er re: https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html

+0

Benutzer Tabelle ist etwa 25 GB. –

+0

Ich denke, dass 25 GB zu viel für den Befehl "count" sind, weil so viele Zeilen durchlaufen werden müssen. – JSierra

Verwandte Themen