csv cassandra copy cqlsh

COPY tabla de cassandra del archivo csv



copy to csv cql (2)

El comando COPY de cqlsh puede ser delicado. Sin embargo, en la documentación COPY está esta línea:

El número de columnas en la entrada CSV es el mismo que el número de columnas en los metadatos de la tabla Cassandra.

Teniendo esto en cuenta, logré que tus datos importados con COPY FROM , al nombrar los campos vacíos ( processstarttimeuuid y processendtimeuuid , respectivamente):

aploetz@cqlsh: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. aploetz@cqlsh: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)

Estoy configurando un paisaje de demostración para Cassandra, Apache Spark y Flume en mi Mac (Mac OS X Yosemite con Oracle jdk1.7.0_55). El paisaje debe funcionar como una prueba de concepto para una nueva plataforma analítica y, por lo tanto, necesito algunos datos de prueba en mi ds cassandra. Estoy usando cassandra 2.0.8.

Creé algunos datos de demostración en Excel y exporté eso como un archivo CSV. La estructura es así:

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

Luego creé un espacio de claves y una familia de columnas en cqlsh usando:

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'';

El nombre de la columna y todas las columnas se crean con minúsculas; deberá investigar esto también algún día, pero eso no es tan relevante en este momento.

Ahora tomo mi archivo CSV, que tiene alrededor de 1600 entradas y quiero importar eso en mi tabla llamada process así:

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;

Da el siguiente error:

Record #0 (line 1) has the wrong number of fields (15 instead of 13). 0 rows imported in 0.050 seconds.

Lo cual es esencialmente cierto, ya que NO tengo los campos de timeUUID en mi cvs-export.

Si pruebo el comando COPY sin nombres de columna explícitos como este (teniendo en cuenta el hecho de que realmente echo de menos dos campos):

cqlsh:dadcargate> COPY process from ''Process_BulkData.csv'' WITH DELIMITER = '';'' AND HEADER = TRUE;

Termino con otro error:

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 poco extraño, pero está bien. Quizás al comando COPY no le gusta el hecho de que faltan dos campos. Sigo pensando que esto es extraño, ya que los campos faltantes están, por supuesto, allí (desde un punto de vista estructural) pero están vacíos.

Todavía tengo otra oportunidad: borré las columnas que faltan en Excel, exporté el archivo nuevamente como cvs e intento importar SIN línea de encabezado en mi csv PERO nombres de columna explícitos, como este:

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;

Me sale este error:

Bad Request: Input length = 1 Aborting import at record #0 (line 1). Previously-inserted values still present. 0 rows imported in 0.034 seconds.

¿Alguien me puede decir lo que estoy haciendo mal aquí? De acuerdo con la documentación de copy-command , la forma en que configuro mis comandos debería funcionar para al menos dos de ellos. O eso pensaría yo.

Pero nah, obviamente me estoy perdiendo algo importante aquí.


Cargando el archivo csv en la tabla de cassandra

paso1) instalar el cargador de cassandra usando esta url
sudo wget https://github.com/brianmhess/cassandra-loader/releases/download/v0.0.23/cassandra-loader

paso2) sudo chmod + x cassandra-loader

a) el nombre del archivo csv es "pt_bms_tkt_success_record_details_new_2016_12_082017-01-0312-30-01.csv"

b) el nombre del espacio de claves es "bms_test"

c) El nombre de la tabla es "pt_bms_tkt_success_record_details_new"

d) las columnas son "trx_id ...... trx_day"

paso3) ubicación del archivo csv y cassandra-loader es "cassandra3.7 / bin /"

paso $) [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_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_nombre, 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, fuente, palabra clave, 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, el canal, 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) ";