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à.
Fase 4: Configurare cqlsh COPY FROM
le impostazioni
Questa sezione descrive come determinare i valori dei parametri percqlsh COPY
FROM
. Il cqlsh COPY FROM
comando legge il CSV file che hai preparato in precedenza e inserisce i dati in Amazon Keyspaces utilizzando. CQL Il comando divide le righe e distribuisce le INSERT
operazioni tra un insieme di lavoratori. Ogni lavoratore stabilisce una connessione con Amazon Keyspaces e INSERT
invia richieste attraverso questo canale.
Il cqlsh COPY
comando non ha una logica interna per distribuire il lavoro in modo uniforme tra i suoi lavoratori. Tuttavia, puoi configurarlo manualmente per assicurarti che il lavoro sia distribuito in modo uniforme. Inizia esaminando questi parametri chiave di cqlsh:
-
DELIMITER— Se hai usato un delimitatore diverso da una virgola, puoi impostare questo parametro, che per impostazione predefinita è la virgola.
-
INGESTRATE— Il numero obiettivo di righe che
cqlsh COPY FROM
tenta di elaborare al secondo. Se non è impostato, il valore predefinito è 100.000. -
NUMPROCESSES— Il numero di processi di lavoro minorile che cqlsh crea per le attività.
COPY FROM
Il massimo per questa impostazione è 16, l'impostazione predefinita ènum_cores - 1
,num_cores
dov'è il numero di core di elaborazione sull'host che esegue cqlsh. -
MAXBATCHSIZE— La dimensione del batch determina il numero massimo di righe inserite nella tabella di destinazione in un singolo batch. Se non è impostato, cqlsh utilizza batch di 20 righe inserite.
-
CHUNKSIZE— La dimensione dell'unità di lavoro che passa al lavoratore minorile. Per impostazione predefinita, è impostata su 5.000.
-
MAXATTEMPTS— Il numero massimo di volte in cui riprovare un blocco di lavoro non riuscito. Una volta raggiunto il numero massimo di tentativi, i record non riusciti vengono scritti in un nuovo CSV file che è possibile eseguire nuovamente in un secondo momento dopo aver esaminato l'errore.
Imposta in INGESTRATE
base al numero di WCUs file che hai assegnato alla tabella di destinazione. Il INGESTRATE
valore del cqlsh COPY FROM
comando non è un limite, ma una media target. Ciò significa che può (e spesso succede) superare il numero impostato. Per consentire l'insorgenza di interruzioni e assicurarvi che sia disponibile una capacità sufficiente per gestire le richieste di caricamento dei dati, impostate INGESTRATE
il 90% della capacità di scrittura della tabella.
INGESTRATE = WCUs * .90
Quindi, impostate il NUMPROCESSES
parametro in modo che sia uguale a uno in meno rispetto al numero di core del sistema. Per scoprire qual è il numero di core del sistema, è possibile eseguire il codice seguente.
python -c "import multiprocessing; print(multiprocessing.cpu_count())"
Per questo tutorial, utilizziamo il seguente valore.
NUMPROCESSES = 4
Ogni processo crea un lavoratore e ogni lavoratore stabilisce una connessione ad Amazon Keyspaces. Amazon Keyspaces può supportare fino a 3.000 CQL richieste al secondo per ogni connessione. Ciò significa che devi assicurarti che ogni lavoratore elabori meno di 3.000 richieste al secondo.
InoltreINGESTRATE
, i lavoratori spesso superano il numero impostato e non sono limitati dai secondi. Pertanto, per tenere conto delle interruzioni, impostate i parametri cqlsh in modo che ciascun lavoratore elabori 2.500 richieste al secondo. Per calcolare la quantità di lavoro distribuita a un lavoratore, utilizzate le seguenti linee guida.
-
Dividi
INGESTRATE
perNUMPROCESSES
. -
Se
INGESTRATE
/NUMPROCESSES
> 2.500, abbassa il valoreINGESTRATE
per rendere vera questa formula.
INGESTRATE / NUMPROCESSES <= 2,500
Prima di configurare le impostazioni per ottimizzare il caricamento dei nostri dati di esempio, esaminiamo le impostazioni cqlsh
predefinite e vediamo come il loro utilizzo influisce sul processo di caricamento dei dati. Poiché cqlsh COPY FROM
utilizza il CHUNKSIZE
per creare blocchi di lavoro (INSERT
rendiconti) da distribuire ai lavoratori, il lavoro non viene distribuito automaticamente in modo uniforme. Alcuni lavoratori potrebbero rimanere inattivi, a seconda dell'impostazione. INGESTRATE
Per distribuire il lavoro in modo uniforme tra i lavoratori e mantenere per ogni lavoratore la frequenza ottimale di 2.500 richieste al secondo, è necessario impostare CHUNKSIZE
e modificare i INGESTRATE
parametri di input. MAXBATCHSIZE
Per ottimizzare l'utilizzo del traffico di rete durante il caricamento dei dati, scegliete un valore vicino al valore massimo di 30. MAXBATCHSIZE
Passando CHUNKSIZE
a 100 e MAXBATCHSIZE
a 25, le 10.000 righe vengono distribuite uniformemente tra i quattro lavoratori (10.000/2500 = 4).
Il seguente esempio di codice lo illustra.
INGESTRATE = 10,000 NUMPROCESSES = 4 CHUNKSIZE = 100 MAXBATCHSIZE. = 25 Work Distribution: Connection 1 / Worker 1 : 2,500 Requests per second Connection 2 / Worker 2 : 2,500 Requests per second Connection 3 / Worker 3 : 2,500 Requests per second Connection 4 / Worker 4 : 2,500 Requests per second
Per riassumere, utilizzate le seguenti formule per impostare i parametri: cqlsh COPY FROM
-
INGESTRATE= write_capacity_units * .90
-
NUMPROCESSES= num_cores -1 (impostazione predefinita)
-
INGESTRATE/NUMPROCESSES= 2.500 (Questa deve essere una dichiarazione vera).
-
MAXBATCHSIZE= 30 (il valore predefinito è 20. Amazon Keyspaces accetta batch fino a 30.)
-
CHUNKSIZE = (INGESTRATE / NUMPROCESSES) / MAXBATCHSIZE
Ora che hai calcolato NUMPROCESSES
e CHUNKSIZE
sei pronto per caricare i tuoi dati. INGESTRATE