Fase 4: Configurare cqlsh COPY FROM le impostazioni - 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à.

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.

  • SeINGESTRATE/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 (INSERTrendiconti) 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