Passaggio 2: prepara i dati da caricare utilizzando DSBulk - 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 da caricare utilizzando DSBulk

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 dsbulk parametri appropriati e le impostazioni della tabella richieste.

Randomizza i dati

Il dsbulk comando legge e scrive i dati nello stesso ordine in cui appaiono nel file CSV. Se si utilizza il dsbulk comando per creare il file sorgente, i dati vengono scritti in ordine di chiave nel file 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 CSV chiamato. keyspace.table.csv Ora puoi eliminare il keyspaces_sample_table.csv file, non è più necessario.

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 Calcolo della dimensione delle righe in Amazon Keyspaces.

Il codice seguente utilizza AWK per analizzare un file CSV 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}

Assicurati che la dimensione massima delle righe non superi 1 MB. In caso affermativo, devi suddividere la riga o comprimere i dati per portare la dimensione della riga al di sotto di 1 MB. Nel passaggio successivo di questo tutorial, utilizzerai la dimensione media delle righe per fornire la capacità di scrittura per la tabella.