Tôi đang thiết lập một cảnh giới thiệu cho Cassandra, Apache Spark và Flume trên máy Mac của tôi (Mac OS X Yosemite với Oracle jdk1.7.0_55). Cảnh quan sẽ làm việc như một bằng chứng về khái niệm cho một nền tảng phân tích mới và do đó tôi cần một số dữ liệu thử nghiệm trong db cassandra của tôi. Tôi đang sử dụng cassandra 2.0.8.COPY bảng cassandra từ csv tập tin
Tôi đã tạo một số dữ liệu demo trong excel và xuất dưới dạng tệp CSV. Cấu trúc là như thế này:
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
sau đó tôi đã tạo ra một keyspace và một gia đình cột trong cqlsh sử dụng:
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';
Tên gia đình cột và tất cả các cột trong nó được tạo ra với tất cả các trường hợp thấp hơn - sẽ phải điều tra về điều này cũng như một số ngày, nhưng đó không phải là quá có liên quan vào lúc này.
Bây giờ tôi đưa tập tin CSV của tôi, trong đó có khoảng 1600 bài dự thi và muốn nhập khẩu mà trong bảng của tôi tên là process
như thế này:
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;
Nó cung cấp cho các lỗi sau:
Record #0 (line 1) has the wrong number of fields (15 instead of 13).
0 rows imported in 0.050 seconds.
nào về cơ bản là đúng, Vì tôi KHÔNG có các trường timeUUID trong cvs-export của tôi.
Nếu tôi cố gắng lệnh COPY mà không rõ ràng cột tên như thế này (vì thực tế, rằng tôi thực sự làm bỏ lỡ hai lĩnh vực):
cqlsh:dadcargate> COPY process from 'Process_BulkData.csv'
WITH DELIMITER = ';' AND HEADER = TRUE;
tôi kết thúc với một lỗi khác:
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. Kinda lạ, nhưng được rồi. Có lẽ lệnh COPY không thích thực tế là có hai trường bị thiếu. Tôi vẫn nghĩ điều này là lạ, vì tất cả các lĩnh vực còn thiếu đều có (từ một quan điểm cấu trúc) nhưng chỉ trống rỗng.
tôi vẫn còn có một shot: Tôi đã xóa các cột mất tích trong excel, xuất khẩu các tập tin một lần nữa như cvs và cố gắng nhập KHÔNG dòng tiêu đề trong csv của tôi NHƯNG tên cột rõ ràng, như thế này:
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;
tôi gặp lỗi này:
Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.034 seconds.
BẤT CỨ ai có thể cho tôi biết tôi đang làm gì sai ở đây? Theo số documentation of copy-command, cách tôi thiết lập các lệnh của mình, nên làm việc cho ít nhất hai trong số chúng. Hoặc tôi nghĩ vậy.
Nhưng không, tôi rõ ràng thiếu điều gì đó quan trọng ở đây.
Trong lần thử cuối cùng của bạn, bạn đề cập rằng bạn không bao gồm dòng tiêu đề trong tệp .csv, nhưng tôi thấy rõ ràng 'VÀ HEADER = TRUE' trong lệnh' COPY 'của bạn. – Aaron
Đó là chính xác. Tôi đã thay đổi tập tin (không có tiêu đề bây giờ) và xem, điều gì xảy ra: 'Yêu cầu không hợp lệ: Độ dài đầu vào = 1 Hủy nhập khẩu tại bản ghi # 0 (dòng 1). Các giá trị được chèn trước đây vẫn hiện diện.' – siliconchris