Étape 2 : Préparation des données sources pour un téléchargement de données réussi - Amazon Keyspaces (pour Apache Cassandra)

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Étape 2 : Préparation des données sources pour un téléchargement de données réussi

La préparation des données sources pour un transfert efficace est un processus en deux étapes. Tout d'abord, vous répartissez les données de manière aléatoire. Au cours de la deuxième étape, vous analysez les données pour déterminer les valeurs de cqlsh paramètres appropriées et les paramètres de table requis afin de garantir le succès du téléchargement des données.

Randomiser les données

La cqlsh COPY FROM commande lit et écrit les données dans l'ordre dans lequel elles apparaissent dans le CSV fichier. Si vous utilisez la cqlsh COPY TO commande pour créer le fichier source, les données sont écrites dans l'ordre trié par clé dans le. CSV En interne, Amazon Keyspaces partitionne les données à l'aide de clés de partition. Bien qu'Amazon Keyspaces intègre une logique permettant d'équilibrer la charge des demandes pour la même clé de partition, le chargement des données est plus rapide et plus efficace si vous répartissez la commande de manière aléatoire. En effet, vous pouvez tirer parti de l'équilibrage de charge intégré qui se produit lorsque Amazon Keyspaces écrit sur différentes partitions.

Pour répartir uniformément les écritures sur les partitions, vous devez répartir les données de manière aléatoire dans le fichier source. Vous pouvez écrire une application pour cela ou utiliser un outil open source, tel que Shuf. Shuf est disponible gratuitement sur les distributions Linux, sur macOS (en installant coreutils dans homebrew) et sur Windows (en utilisant le sous-système Windows pour Linux ()). WSL Une étape supplémentaire est nécessaire pour éviter que la ligne d'en-tête contenant les noms des colonnes ne soit modifiée au cours de cette étape.

Pour randomiser le fichier source tout en préservant l'en-tête, entrez le code suivant.

tail -n +2 keyspaces_sample_table.csv | shuf -o keyspace.table.csv && (head -1 keyspaces_sample_table.csv && cat keyspace.table.csv ) > keyspace.table.csv1 && mv keyspace.table.csv1 keyspace.table.csv

Shuf réécrit les données dans un nouveau CSV fichier appelé. keyspace.table.csv Vous pouvez désormais supprimer le keyspaces_sample_table.csv fichier, vous n'en avez plus besoin.

Analyser les données

Déterminez la taille moyenne et maximale des lignes en analysant les données.

Vous le faites pour les raisons suivantes :

  • La taille moyenne des lignes permet d'estimer la quantité totale de données à transférer.

  • Vous avez besoin de la taille de ligne moyenne pour fournir la capacité d'écriture nécessaire au téléchargement des données.

  • Vous pouvez vous assurer que la taille de chaque ligne est inférieure à 1 Mo, ce qui correspond à la taille de ligne maximale dans Amazon Keyspaces.

Note

Ce quota fait référence à la taille des lignes et non à la taille de la partition. Contrairement aux partitions Apache Cassandra, les partitions Amazon Keyspaces peuvent être de taille pratiquement indépendante. Les clés de partition et les colonnes de clustering nécessitent un espace de stockage supplémentaire pour les métadonnées, que vous devez ajouter à la taille brute des lignes. Pour de plus amples informations, veuillez consulter Estimer la taille des lignes dans Amazon Keyspaces.

Le code suivant permet AWKd'analyser un CSV fichier et d'imprimer la taille de ligne moyenne et maximale.

awk -F, 'BEGIN {samp=10000;max=-1;}{if(NR>1){len=length($0);t+=len;avg=t/NR;max=(len>max ? len : max)}}NR==samp{exit}END{printf("{lines: %d, average: %d bytes, max: %d bytes}\n",NR,avg,max);}' keyspace.table.csv

L'exécution de ce code génère le résultat suivant.

using 10,000 samples: {lines: 10000, avg: 123 bytes, max: 225 bytes}

Vous utiliserez la taille de ligne moyenne à l'étape suivante de ce didacticiel pour configurer la capacité d'écriture de la table.