

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
<a name="bulk-upload-config"></a>

Questa sezione descrive come determinare i valori dei parametri per`cqlsh COPY FROM`. Il `cqlsh COPY FROM` comando legge il file CSV preparato in precedenza e inserisce i dati in Amazon Keyspaces utilizzando CQL. Il comando divide le righe e distribuisce le operazioni tra un insieme di lavoratori. `INSERT` 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:
+ **DELIMITATORE**: se hai utilizzato un delimitatore diverso da una virgola, puoi impostare questo parametro, che per impostazione predefinita è la virgola.
+ **INGESTRATE**: il numero target di righe che tenta di elaborare al secondo. `cqlsh COPY FROM` 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. 
+ **MAXTENTEMENTS** — Il numero massimo di volte in cui riprovare un blocco di lavoro non riuscito. Una volta raggiunto il tentativo massimo, i record non riusciti vengono scritti in un nuovo file CSV che è possibile eseguire nuovamente in un secondo momento dopo aver esaminato l'errore.

`INGESTRATE`Impostato in base al numero di file WCUs 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 richieste CQL al secondo su ogni connessione. Ciò significa che devi assicurarti che ogni lavoratore elabori meno di 3.000 richieste al secondo. 

Inoltre`INGESTRATE`, 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` per`NUMPROCESSES`.
+ Se`INGESTRATE`/`NUMPROCESSES`> 2.500, abbassa il valore `INGESTRATE` 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\$1capacity\$1units \$1 .90
+ **NUMPROCESSES** = num\$1cores -1 (impostazione predefinita)
+ **INGESTRATE/NUMPROCESSES** = 2.500 (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 e `CHUNKSIZE` sei pronto per `NUMPROCESSES` caricare `INGESTRATE` i tuoi dati.