2016-04-15 4 views
0

Ich benutze Cassandra-Treiber für Java von datastax. Ich weiß, dass ich 20 Millionen Zeilen in einer Tabelle habe. Wenn ich verwendeCassandra beendet Verbindung in der Mitte?

Der Prozess stoppt, nachdem etwa 800000 Zeilen abgerufen wurden.

In meinem Java-Code

futureResults = session.executeAsync(statement); 
ResultSet results = futureResults.getUninterruptibly(); 
for (Row row : results) { 

} 

Vielleicht habe ich etwas falsch gemacht?

+0

Haben Sie die Protokolle cassandra.log und system.log überprüft? Es kann Ihnen einen potenziellen Einblick geben. Ein anderes Problem kann ein Netzwerkproblem zwischen Client- und Cassandra-Knoten sein. –

+0

Das Programm wurde korrekt beendet, es bedeutete, dass im ResultSet keine Zeile mehr vorhanden war, um fortzufahren. Ich denke, dass Sie bezüglich des Netzwerkproblems korrekt sind, ich werde versuchen, den Verbindungswiederholungsversuch zu erhöhen – Xitrum

Antwort

3

Was Sie tun, es ist ein recht häufiges anti-Muster mit Cassandra. Da sich jede Datenpartition in verschiedenen Teilen Ihres Clusters befindet, führt diese Abfrage zu einer massiven Streuung/Erfassung, die sich um einen Koordinator dreht. Irgendwann beginnt das Timing und der Koordinator wird einen Fehler ausgeben. Ein kurzer Blick in die Protokolle sollte es finden.

Fast immer, eine SELECT-Abfrage sollte eine Partition Schlüssel für Lokalität umfassen. Wenn dies nicht möglich ist, ist es am besten, zu einem Stapel zu wechseln, der jeden Knoten effizient scannt. Der Spark-Anschluss für Cassandra ist perfekt für ein Zugriffsmuster wie dieses.

+0

So bedeutet es, dass die Daten meiner Tabelle auf allen Knoten im Cluster verteilt werden können. Ich versuche herauszufinden, wie ich alle Partitionsschlüssel meines Tisches bekommen kann, aber ich kann keine Antwort finden, die ich verstehen kann. Weißt du, wie kann ich das mit nodetool oder cqls archivieren? Danke – Xitrum

+0

Sie suchen nach etwas wie sqldump, das eine gesamte Tabelle exportiert? –

+0

Ich bin auf der Suche nach einer Möglichkeit, die Partitionsschlüssel meiner Tabelle zu extrahieren, so dass ich sie in meiner Select-Anweisung verwenden kann, wie Sie vorgeschlagen haben. – Xitrum

Verwandte Themen