2016-05-13 9 views
0

Ich versuche Cassandra-Tabelle sofort zu lesen, während Daten in die Tabelle eingefügt werden. Die Tabelle hat Zeitstempel als einer der Primärschlüssel (nicht der Partitionsschlüssel). Wir haben einen Funke Job liest aus dem Kafka und schreibt alle 15 Sekunden nach Cassandra. Die Server-Komponente liest fast sofort aus der Cassandra, wenn der Funke-Job beginnt, die Daten einzufügen. Da die Daten in die Cassandra eingefügt werden und riesig sind, lesen wir die Daten in den Seiten. Beim Einlesen der Seiten haben wir festgestellt, dass nur wenige der Datensätze übersprungen werden und den letzten Datensatz erreichen.Cassandra gleichzeitig lesen

Aber wenn wir die gleiche Logik des Lesens der Daten nach Seiten auf allen fertig eingefügten Daten ausführen, funktioniert es gut (kein Überspringen von Datensätzen). Gibt es eine Möglichkeit, die Daten in Seiten zu lesen, während Daten in Cassandra eingefügt werden?

Antwort

0

Was Sie beobachten, könnte ein Ergebnis einer aktuellen Cassandra data consistency level sein. Um sicherzustellen, dass alle geschriebenen Daten zum Lesen verfügbar sind, können Sie ALL Ebene verwenden, aber dies wird dazu führen, dass alle Knoten warten müssen, um eine Änderung vorzunehmen.

+0

Danke, ich benutze Statement-Objekt und übergebe die Abfrage mit Einstellungskonsistenz an alle Statement-Statements = new SimpleStatement (query); statement.setConsistencyLevel (ConsistencyLevel.ALL); 'aber immer noch wenige Datensätze fehlen. – kiran