Passaggio 2: prepara i dati di origine per un corretto caricamento dei dati - Amazon Keyspaces (per Apache Cassandra)

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Passaggio 2: prepara i dati di origine per un corretto caricamento dei dati

La preparazione dei dati di origine per un trasferimento efficiente è un processo in due fasi. Innanzitutto, i dati vengono randomizzati. Nella seconda fase, si analizzano i dati per determinare i valori dei cqlsh parametri appropriati e le impostazioni della tabella richieste per garantire che il caricamento dei dati abbia esito positivo.

Randomizza i dati

Il cqlsh COPY FROM comando legge e scrive i dati nello stesso ordine in cui appaiono nel file. CSV Se si utilizza il cqlsh COPY TO comando per creare il file sorgente, i dati vengono scritti in ordine di chiave in. CSV Internamente, Amazon Keyspaces partiziona i dati utilizzando chiavi di partizione. Sebbene Amazon Keyspaces disponga di una logica integrata per aiutare a bilanciare il carico delle richieste per la stessa chiave di partizione, il caricamento dei dati è più rapido ed efficiente se si rende casuale l'ordine. Questo perché puoi sfruttare il bilanciamento del carico integrato che si verifica quando Amazon Keyspaces scrive su partizioni diverse.

Per distribuire le scritture tra le partizioni in modo uniforme, devi randomizzare i dati nel file sorgente. È possibile scrivere un'applicazione per eseguire questa operazione o utilizzare uno strumento open source, come Shuf. Shuf è disponibile gratuitamente sulle distribuzioni Linux, su macOS (installando coreutils in homebrew) e su Windows (utilizzando Windows Subsystem for Linux ()). WSL È necessario un passaggio aggiuntivo per evitare che la riga di intestazione con i nomi delle colonne venga mescolata in questo passaggio.

Per rendere casuale il file sorgente preservando l'intestazione, inserisci il codice seguente.

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 riscrive i dati in un nuovo file chiamato. CSV keyspace.table.csv Ora puoi eliminare il keyspaces_sample_table.csv file: non ti serve più.

Analizza i dati

Determina la dimensione media e massima delle righe analizzando i dati.

Lo fai per i seguenti motivi:

  • La dimensione media delle righe aiuta a stimare la quantità totale di dati da trasferire.

  • È necessaria la dimensione media delle righe per fornire la capacità di scrittura necessaria per il caricamento dei dati.

  • Puoi assicurarti che ogni riga abbia una dimensione inferiore a 1 MB, che è la dimensione massima delle righe in Amazon Keyspaces.

Nota

Questa quota si riferisce alla dimensione della riga, non alla dimensione della partizione. A differenza delle partizioni Apache Cassandra, le partizioni Amazon Keyspaces possono avere dimensioni praticamente illimitate. Le chiavi di partizione e le colonne di clustering richiedono spazio di archiviazione aggiuntivo per i metadati, che è necessario aggiungere alla dimensione grezza delle righe. Per ulteriori informazioni, consulta Stima della dimensione delle righe in Amazon Keyspaces.

Il codice seguente consente AWKdi analizzare un CSV file e stampare la dimensione media e massima delle righe.

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'esecuzione di questo codice produce il seguente risultato.

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

Utilizzerai la dimensione media delle righe nel passaggio successivo di questo tutorial per fornire la capacità di scrittura per la tabella.