2017-03-09 4 views
2

Ich versuche, Daten in Cassandra einzufügen. Ich habe eine Liste von 1M4 ganze Zahl, die ich mit dem folgenden Schema in einer Tabelle eingefügt werden soll:Cassandra schreiben Timeout schreiben

CREATE TABLE IF NOT EXISTS my_table (
    node_id bigint, 
    screen_name text, 
    centrality float, 
    friend_follower_id bigint, 
    is_friend boolean, 
    is_follower boolean, 
    PRIMARY KEY ((node_id), friend_follower_id)); 

Daten einzufügen ich folgendes hat:

prepared_statement = session.prepare("INSERT INTO {0} (node_id, screen_name, friend_follower_id, centrality, is_follower) VALUES ({1}, {2}, ?, {3}, true)".format("met_table", author_id, author_username, 0.0) 
execute_concurrent_with_args(session, prepared_statement, zip(followers)) 

Der Fehler wie:

cassandra.WriteTimeout: Error from server: code1100 [Coordinator node timed out waiting for replica nodes' responses] message="Operation timed -out received only 0 responses." info={'consistency': LOCAL_ONE, 'received_response':0, 'required_response':1} 

Wie kann ich Zeitmangel vermeiden, wenn große Datenmengen geschrieben werden?

Antwort

3

Dieser Fehler weist auf einen Server-seitigen Koordinator-Timeout hin. Dies wird durch die cassandra.yaml Einstellung write_request_timeout_in_ms geregelt. Sie können versuchen, das zu erhöhen.

Dies wird manchmal beobachtet, wenn ein Cluster überlastet ist und der Server GC Hangrepliken anhält. Bei höheren Konsistenzniveaus ist es jedoch häufiger. Sie haben nichts über Ihre Clustergröße oder den Replikationsfaktor gesagt. Laufen Sie mit RF = 3?

Wenn Ihre Clusterzuordnung diese Schreiblast nicht verarbeiten kann, ist es möglich, die Last zu verringern, indem Sie den Parameter concurrency auf execute_concurrent_with_args reduzieren.

+0

Ich arbeite an localhost. Mein Replikationsfaktor ist auf 2 gesetzt. – mel

+0

Ich erhöhe (x10) die write_request_timeout aber das Problem, das ich treffe, ist, dass mein Computer sehr langsam wird und ich denke, dass mein Code stecken bleibt. Die Hälfte der Daten wurde eingefügt, aber die anderen wurden nicht eingefügt. Ich berechne die Größe der Liste, die ich einfügen möchte und die Größe ist ungefähr 10 MB, ist das ein normaler Usecase? Sollte ich es in kleinere Stücke teilen? – mel

Verwandte Themen