Konfiguruję krajobraz demonstracyjny dla Cassandry, Apache Spark i Flume na moim Macu (Mac OS X Yosemite z Oracle jdk1.7.0_55). Krajobraz będzie działał jako dowód koncepcji nowej platformy analitycznej i dlatego potrzebuję pewnych danych testowych w mojej bazie danych Kasandra. Używam kassandra 2.0.8.Skopiuj tabelę kelnera z pliku CSV
Utworzyłem kilka danych demonstracyjnych w programie Excel i wyeksportowałem je jako plik CSV. Konstrukcja jest tak:
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
Potem stworzył KEYSPACE i rodzinę kolumny w cqlsh używając:
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';
Nazwa rodziny kolumnę i wszystkie kolumny w nim są tworzone ze wszystkimi małymi literami - będzie Muszę to również zbadać pewnego dnia, ale w tej chwili nie jest to tak istotne.
Teraz biorę mój plik CSV, który ma około 1600 wpisów i chcesz importować, że w moim stole nazwie process
takiego:
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;
To daje następujący błąd:
Record #0 (line 1) has the wrong number of fields (15 instead of 13).
0 rows imported in 0.050 seconds.
Która jest zasadniczo prawdziwe, ponieważ NIE mam pól timeUUID w moim eksporcie cvs.
Gdy próbuję polecenie Kopiuj bez wyraźnych kolumn nazw jak to (biorąc pod uwagę fakt, że faktycznie brakuje dwóch pól):
cqlsh:dadcargate> COPY process from 'Process_BulkData.csv'
WITH DELIMITER = ';' AND HEADER = TRUE;
I skończyć z innego błędu:
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. Trochę dziwne, ale w porządku. Może polecenie COPY nie podoba się brakowi dwóch pól. Nadal uważam to za dziwne, ponieważ brakujące pola są oczywiście (z punktu widzenia struktury), ale puste.
mam jeszcze kolejną szansę: Usunąłem brakujące kolumny w Excelu, eksportowany plik ponownie jako CVS i próby importowania BEZ wierszu nagłówka w moim csv BUT jednoznacznych nazw kolumn, tak:
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 Otrzymaj ten błąd:
Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.034 seconds.
Czy ktokolwiek może mi powiedzieć, co robię źle? Zgodnie z documentation of copy-command sposób, w jaki konfiguruję moje polecenia, powinien działać dla co najmniej dwóch z nich. Tak przynajmniej sądzę.
Ale nah, oczywiście brakuje mi czegoś ważnego tutaj.
W swojej ostatniej próbie wspominasz, że nie zawarłeś wiersza nagłówka w pliku .csv, ale wyraźnie widzę "AND HEADER = TRUE" w twoim poleceniu "COPY". – Aaron
To prawda. Zmieniłem plik (teraz nie ma nagłówka) i zobacz, co się stanie: "Złe żądanie: długość wpisu = 1 Przerwanie importu z rekordu # 0 (wiersz 1). Wcześniej wstawione wartości nadal obecne. " – siliconchris