COPIE cassandra tableau de fichier csv
Je suis la mise en place d'une démo paysage pour Cassandra, Apache Spark et Flume sur mon Mac (Mac OS X Yosemite avec Oracle jdk1.7.0_55). Le paysage comme une preuve de concept pour une nouvelle plate-forme d'analyse et, par conséquent, j'ai besoin de quelques données de test dans mon cassandra db. Je suis à l'aide de cassandra 2.0.8.
J'ai créé quelques démo de données dans excel et exporté en tant que fichier CSV. La structure est comme ceci:
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
Ensuite, j'ai créé un espace et d'une colonne de la famille dans cqlsh à l'aide de:
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';
La colonne nom de famille et toutes les colonnes sont créées avec des bas de casse - doit enquêter à ce aussi bien un jour, mais ce n'est pas tellement pertinent pour le moment.
Maintenant, je prends mon fichier CSV, qui est d'environ 1600 entrées et souhaitez importer que dans ma table nommée process
comme ceci:
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;
Il donne l'erreur suivante:
Record #0 (line 1) has the wrong number of fields (15 instead of 13).
0 rows imported in 0.050 seconds.
Qui est essentiellement vrai, Comme je n'ai PAS le timeUUID Champs dans ma cvs-export.
Si j'essaie la commande de COPIE sans autorisation explicite de la colonne des noms comme cela (compte tenu du fait, que j'ai réellement faire de manquer deux champs):
cqlsh:dadcargate> COPY process from 'Process_BulkData.csv'
WITH DELIMITER = ';' AND HEADER = TRUE;
Je me retrouve avec une erreur:
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. Un peu étrange, mais bon. Peut-être la commande de COPIE n'aime pas le fait qu'il y a deux champs manquants. Je pense toujours que cet être étrange, comme les champs manquants sont bien sûr il y a (à partir d'un point de vue structurel), mais uniquement de vide.
J'ai encore un autre coup de: j'ai supprimé les colonnes manquantes dans excel, exporté à nouveau le fichier cvs et essayez d'importer SANS ligne d'en-tête dans mon csv, MAIS explicite, les noms de colonne, comme ceci:
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;
J'obtiens cette erreur:
Bad Request: Input length = 1
Aborting import at record #0 (line 1). Previously-inserted values still present.
0 rows imported in 0.034 seconds.
Quelqu'un peut me dire ce que je fais de mal? Selon le la documentation de la copie de la commande, la façon dont je configurer mes commandes, doivent travailler pour au moins deux d'entre eux. Ou alors je ne le pense.
Mais non, je suis évidemment manquer quelque chose d'important ici.
- Dans votre dernière tentative, vous mentionnez que vous n'avez pas inclure un en-tête de ligne dans votre .fichier csv, mais je vois clairement
AND HEADER = TRUE
dans votreCOPY
de commande. - Qui est correct. J'ai changé le fichier (pas d'en-tête maintenant) et regardez ce qui se passe:
Bad Request: Input length = 1 Aborting import at record #0 (line 1). Previously-inserted values still present.
Vous devez vous connecter pour publier un commentaire.
cqlsh de
COPY
commande peut être délicat. Toutefois, dans leCOPIER
de la documentation est cette ligne:En gardant cela à l'esprit, j'ai réussi à accéder à vos données à importer avec un
COPY FROM
, en nommant les champs vides (processstarttimeuuid
etprocessendtimeuuid
, respectivement):Chargement de fichier csv dans cassandra table
1)installer cassandra chargeur en utilisant cette url
sudo wget https://github.com/brianmhess/cassandra-loader/releases/download/v0.0.23/cassandra-loader
step2)sudo chmod +x cassandra-chargeur
a)le nom du fichier csv est "pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv"
b)espace de nom est "bms_test"
c)nom de la Table est "pt_bms_tkt_success_record_details_new"
d)les colonnes sont "trx_id......trx_day"
etape 3)fichier csv emplacement et cassandra-loader est "cassandra3.7/bin/"
étape$)[stp@ril-srv-sp3 bin]$ ./cassandra-chargeur -f pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv -hôte 192.168.1.29 -schéma "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_committed,booking_status,amount_paymentstatus,event_application,venue_cinema_companyname,venue_cinema_name,venue_cinema_type,venue_cinema_application,region_str_code,venue_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_name,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,source,keyword,medium,venue_multiplex,venue_state,mobile_type,transaction_range,life_cyclestate_from,transactions_after_offer,is_premium_transaction,city_type,holiday_season,week_type,event_popularity,transactionrange_after_discount,showminusbooking,input_source_name,channel,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,reserve1,reserve2,reserve3,reserve4,reserve5,payment_mode,payment_type,date_of_first_transaction,transaction_time_in_hours,showtime_in_hours,trx_day)";