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 votre COPY 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.
InformationsquelleAutor siliconchris | 2015-02-21