Sono la creazione di un paesaggio demo per Cassandra, Apache Spark e Flume sul mio Mac (Mac OS X Yosemite con Oracle jdk1.7.0_55). Il panorama deve funzionare come prova di concetto per una nuova piattaforma di analisi e quindi ho bisogno di alcuni dati di test nel mio cassandra db. Sto usando la cassandra 2.0.8.COPIA tavolo cassandra da file CSV
ho creato alcuni dati demo in Excel ed esportato che come file CSV. La struttura è come questo:
ProcessUUID;ProcessID;ProcessNumber;ProcessName;ProcessStartTime;ProcessStartTimeUUID;ProcessEndTime;ProcessEndTimeUUID;ProcessStatus;Orderer;VorgangsNummer;VehicleID;FIN;Reference;ReferenceType
0F0D1498-D149-4FCC-87C9-F12783FDF769;AbmeldungKl‰rfall;1;Abmeldung Kl‰rfall;2011-02-03 04:05+0000;;2011-02-17 04:05+0000;;Finished;SIXT;4278;A-XA 1;WAU2345CX67890876;KLA-BR4278;internal
Ho quindi creato uno spazio delle chiavi e una famiglia colonna cqlsh utilizzando:
CREATE KEYSPACE dadcargate
WITH REPLICATAION = { 'class' : 'SimpleStrategy', 'replication_factor' : '1' };
use dadcargate;
CREATE COLUMNFAMILY Process (
ProcessUUID uuid, ProcessID varchar, ProcessNumber bigint, ProcessName varchar,
ProcessStartTime timestamp, ProcessStartTimeUUID timeuuid, ProcessEndTime timestamp,
ProcessEndTimeUUID timeuuid, ProcessStatus varchar, Orderer varchar,
VorgangsNummer varchar, VehicleID varchar, FIN varchar, Reference varchar,
ReferenceType varchar,
PRIMARY KEY (ProcessUUID))
WITH COMMENT='A process is like a bracket around multiple process steps';
Il nome della famiglia della colonna e tutte le colonne in esso vengono creati con tutto in minuscolo - sarà devo indagare su questo anche un giorno, ma non è così rilevante al momento.
ora prendo il mio file CSV, che ha circa 1600 voci e da importare che nella mia tabella denominata process
come questo:
cqlsh:dadcargate> COPY process (processuuid, processid, processnumber, processname,
processstarttime, processendtime, processstatus, orderer, vorgangsnummer, vehicleid,
fin, reference, referencetype)
FROM 'Process_BulkData.csv' WITH DELIMITER = ';' AND HEADER = TRUE;
Si dà il seguente errore:
Record #0 (line 1) has the wrong number of fields (15 instead of 13).
0 rows imported in 0.050 seconds.
Quale è essenzialmente vero, poiché NON ho i campi timeUUID nel mio cvs-export.
Se provo il comando copia senza colonne-nomi espliciti come questo (dato il fatto, che io in realtà faccio mancare due campi):
cqlsh:dadcargate> COPY process from 'Process_BulkData.csv'
WITH DELIMITER = ';' AND HEADER = TRUE;
io alla fine con un altro errore:
Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.009 seconds.
Hm. È strano, ma va bene. Forse al comando COPY non piace il fatto che mancano due campi. Penso ancora che questo sia strano, dato che i campi mancanti sono ovviamente lì (da un punto di vista strutturale) ma solo vuoti.
Ho ancora un altro colpo: ho cancellato le colonne mancanti in Excel, esportati di nuovo il file come CVS e tenta di importare SENZA riga di intestazione nel mio csv MA nomi di colonna espliciti, come questo:
cqlsh:dadcargate> COPY process (processuuid, processid, processnumber, processname,
processstarttime, processendtime, processstatus, orderer, vorgangsnummer, vehicleid,
fin, reference, referencetype)
FROM 'Process_BulkData-2.csv' WITH DELIMITER = ';' AND HEADER = TRUE;
I ottenere questo errore:
Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.034 seconds.
Qualcuno può dirmi cosa sto facendo male qui? Secondo lo documentation of copy-command, il modo in cui imposto i miei comandi dovrebbe funzionare per almeno due di essi. O così penserei.
Ma nah, ovviamente mi manca qualcosa di importante qui.
Nel tuo ultimo tentativo, hai detto che non hai incluso una riga di intestazione nel tuo file .csv, ma vedo chiaramente 'AND HEADER = TRUE' nel comando' COPY'. – Aaron
Questo è corretto. Ho cambiato il file (senza intestazione ora) e guardo cosa succede: 'Bad Request: Input length = 1 Importazione annullata al record # 0 (riga 1). Valori precedentemente inseriti ancora presenti. – siliconchris