2015-02-21 17 views
6

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.

+0

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

+0

Đó 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

Trả lời

13

lệnh cqlsh COPY có thể dễ dàng.Tuy nhiên, trong COPY documentation là dòng này:

The number of columns in the CSV input is the same as the number of columns in the Cassandra table metadata.

Giữ rằng trong tâm trí, tôi đã quản lý để có được dữ liệu của bạn để nhập khẩu với một COPY FROM, bằng cách đặt tên các lĩnh vực có sản phẩm nào (processstarttimeuuidprocessendtimeuuid, tương ứng):

[email protected]:stackoverflow> COPY process (processuuid, processid, processnumber, 
processname, processstarttime, processstarttimeuuid, processendtime, 
processendtimeuuid, processstatus, orderer, vorgangsnummer, vehicleid, fin, reference, 
referencetype) FROM 'Process_BulkData.csv' WITH DELIMITER = ';' AND HEADER = TRUE; 

1 rows imported in 0.018 seconds. 
[email protected]:stackoverflow> SELECT * FROM process ; 

processuuid       | fin    | orderer | processendtime   | processendtimeuuid | processid   | processname  | processnumber | processstarttime   | processstarttimeuuid | processstatus | reference | referencetype | vehicleid | vorgangsnummer 
--------------------------------------+-------------------+---------+---------------------------+--------------------+-------------------+--------------------+---------------+---------------------------+----------------------+---------------+------------+---------------+-----------+---------------- 
0f0d1498-d149-4fcc-87c9-f12783fdf769 | WAU2345CX67890876 | SIXT | 2011-02-16 22:05:00+-0600 |    null | AbmeldungKl‰rfall | Abmeldung Kl‰rfall |    1 | 2011-02-02 22:05:00+-0600 |     null |  Finished | KLA-BR4278 |  internal | A-XA 1 |   4278 

(1 rows) 
+0

Xin chào Bryce, cảm ơn vì gợi ý. Tôi đã quản lý để nhập dữ liệu của mình. Cảm ơn rất nhiều. – siliconchris

+0

Trong trường hợp nó giúp ai đó, lưu ý rằng bạn phải sử dụng dấu nháy đơn. Nếu bạn sử dụng dấu nháy kép xung quanh tệp csv, bạn sẽ nhận được lỗi lệnh sao chép không đúng. – morpheus

0

tải tập tin csv vào bảng cassandra

bước 1) cài đặt cassandra loader sử dụng url này
sudo wget https://github.com/brianmhess/cassandra-loader/releases/download/v0.0.23/cassandra-loader

bước 2) sudo chmod + x cassandra-loader

a) Tên tập tin csv là "pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv"

b) Tên keyspace là "bms_test"

c) tên bảng là "pt_bms_tkt_success_record_details_new"

d) cột "trx_id ...... trx_day"

step3) tập tin csv về vị trí trên và cassandra-loader là "cassandra3.7/bin /"

bước $) [stp @ ril-srv-sp3 bin] $ ./cassandra-loader -f pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv -host 192.168.1.29 -schema "bms_test.pt_bms_tkt_success_record_details_new (trx_id, max_seq, trx_type, trx_record_type, trx_date, trx_show_date, cinema_str_id, session_id, ttype_code, item_id, item_var_sequence, trx_booking_id, venue_name, screen_by_tnum, price_group_code, area_cat_str_code, area_by_tnum, venue_capacity, amount_currentprice, venue_class, trx_booking_status_commany, booking_status, address_cinema_companyname, venue_cinema_name, locations_in_type, address_cinema_application, region_str_code, address_city_name, sub_region_str_code, sub_region_str_name, event_code, event_type, event_name, event_language, event_genre, event_censor_rating, event_release_date, event_producer_code, event_item_na tôi, event_itemvariable_name, event_quantity, amount_amount, amount_bookingfee, amount_deliveryfee, amount_additionalcharges, amount_final, amount_tax, offer_isapplied, OFFER_TYPE, OFFER_NAME, offer_amount, payment_lastmode, payment_lastamount, payment_reference1, payment_reference2, payment_bank, customer_loginid, customer_loginstring, offer_referral, customer_mailid, customer_mobile, trans_str_sales_status_at_venue, trans_mny_trans_value_at_venue, payment_ismypayment, click_recordsource, campaign_multiplex, địa_chỉ_state, mobile_type, transaction_range, life_cyclestate_from, transaction_after_offer, is_premium_transaction, city_type, holiday_season, week_type, event_popularity, transactionrange_after_discount, showminusbooking, input_source_name, kênh, time_stamp, life_cyclestate_to, record_status, week_name, number_of_active_customers, event_genre1, event_genre2, event_genre3, event_genre4, event_language1, event_language2, event_language3, event_language4, event_release_date_range, showminusbooking_range, res erve1, reserve2, reserve3, reserve4, reserve5, payment_mode, payment_type, date_of_first_transaction, transaction_time_in_hours, showtime_in_hours, trx_day) ";

Các vấn đề liên quan