2017-12-28 4 views
0

Ich bin Bulk Laden der Daten in Cassandra mit SSTables. Ich bin dabei https://github.com/SPBTV/csv-to-sstable dies.Fehler beim Auflisten von Dateien Fehler in Cassandra

habe ich die SSTables von

$ java -jar csv-to-sstable.jar quote /home/arque/table_big.cql /home/arque/Documents/data.csv /home/arque 

ich eine Störung erhalte, während ich folgenden Befehl ausführen versuche:

$ sstableloader -d 192.168.0.7 /home/arque/quote/table_big 

Fehler:

Error: Established connection to initial hosts Opening sstables and calculating sections to stream Failed to list files in /home/arque/quote/table_big java.lang.AssertionError java.lang.RuntimeException: Failed to list files in /home/arque/quote /table_big at org.apache.cassandra.db.lifecycle.LogAwareFileLister.list(LogAwareFileLister.java:77)

+1

Ist/home/arque/quote/table_big der korrekte Speicherort auf dem Zielhost? –

+0

@SimonFontanaOscarsson yup. Die Lage ist korrekt. –

+0

Dies geschieht nur, wenn meine Primärschlüssel Composite Key ist. –

Antwort

0

Der Fehler ist in das csv-to-sstable-Tool. Sehen Sie sich diese Datei an: https://github.com/SPBTV/csv-to-sstable/blob/master/src/main/java/com/spbtv/cassandra/bulkload/Bulkload.java

Sie sagen, dass Sie nur ein Problem haben, wenn der Primärschlüssel der zusammengesetzte Schlüssel ist. Das liegt daran, dass das Tool erwartet, dass der Primärschlüssel auf der gleichen Spur wie die Spalte definiert wird. Linie 66:

// Primary key defined on the same line as the corresponding column 
Pattern pattern = Pattern.compile(".*?(\\w+)\\s+\\w+\\s+PRIMARY KEY.*"); 

Wenn Sie dies ändern Ihre Reise sollte es funktionieren.

+0

Vielen Dank für Ihre Zeit, aber Tool bietet auch Code für multicolumn Primärschlüssel. '// Multi-Spalten Primärschlüssel auf einem separaten line' definiert ' pattern = Pattern.compile (“. * PRIMARY KEY \\ s * \\ (\\ s * \\ ((. *?) \\). \\). * ");' –

+0

Verdammt. Ich war viel zu schnell mit dieser Antwort, Entschuldigung. Ich würde immer noch versuchen, das Tool zu debuggen, um herauszufinden, ob es alle Informationen richtig erhält. –