2 votes

Cassandra : Copier des données avec une fonction cql sur une colonne

J'essaie d'exporter et d'importer des données d'une table cassandra pour changer une colonne timestamp en colonne unixepoch (c'est à dire de type timestamp à bigint).

J'ai essayé d'exporter les données au format csv en utilisant la commande suivante

COPY raw_data(raw_data_field_id, toUnixTimestamp(dt_timestamp), value) TO 'raw_data_3_feb_19.csv' WITH PAGETIMEOUT=40 AND PAGESIZE=20;

mais j'obtiens l'erreur suivante : Improper COPY command.

Comment puis-je résoudre ce problème ou existe-t-il un meilleur moyen d'y parvenir ?

de

 raw_data_field_id | dt_timestamp                    | value
-------------------+---------------------------------+-------
                23 | 2018-06-12 07:15:00.656000+0000 | 131.3

à

 raw_data_field_id | dt_unix_timestamp_epoch         | value
-------------------+---------------------------------+-------
                23 | 1528787700656                   | 131.3

3voto

Horia Points 2394

En COPY ne permet pas d'ajouter des fonctions supplémentaires pour traiter la sortie.

Je dirais que vous avez plusieurs solutions :

  • exporter les données en csv à l'aide de COPY, convertir la valeur de l'horodatage (à l'aide de commandes sh ou d'un langage de haut niveau) et l'importer dans une nouvelle table.
  • exporter en utilisant echo "select raw_data_field_id, toUnixTimestamp(dt_timestamp), value from raw.raw_data;" | ccm node1 cqlsh > output.csv , modifier le csv pour qu'il ait un format correct et l'importer dans une nouvelle table (cette solution est tirée de aquí )
  • écrire votre propre outil de conversion en utilisant l'un des pilotes Cassandra (python, java, etc.).
  • vous pourriez peut-être essayer quelque chose avec un UDF, mais je n'ai pas testé cela.

Vous devez savoir que COPY FROM prend en charge les ensembles de données de moins de 2 millions de lignes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X