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à.
Ottimizzazione di un caricamento in blocco di Amazon Neptune
Utilizzare le seguenti strategie per ridurre al minimo il tempo di caricamento per un caricamento in blocco di Neptune:
-
Pulire i dati:
Assicurarsi di convertire i dati in un formato di dati supportato prima di caricarli.
Rimuovere eventuali duplicati o errori noti.
Ridurre il più possibile il numero di predicati univoci (come le proprietà di archi e vertici).
-
Ottimizzare i file:
Se carichi file di grandi dimensioni, ad esempio CSV file da un bucket Amazon S3, il loader gestisce la concorrenza per te analizzandoli in blocchi che può caricare in parallelo. L'utilizzo di un numero molto elevato di file di piccole dimensioni può rallentare questo processo.
Se si caricano più file da una cartella Amazon S3, lo strumento di caricamento carica automaticamente prima i file dei vertici, poi quelli degli archi.
La compressione dei file riduce i tempi di trasferimento. Lo dello strumento di caricamento supporta la compressione
gzip
dei file di origine.
-
Controllare le impostazioni dello dello strumento di caricamento:
-
Se non è necessario eseguire altre operazioni durante il caricamento, utilizzare il parametro OVERSUBSCRIBE parallelism. Questa impostazione dei parametri fa sì che il bulk loader utilizzi tutte le risorse disponibili durante l'esecuzione. CPU In genere è necessario il 60%-70% della CPU capacità per mantenere l'operazione in esecuzione alla velocità consentita dai vincoli di I/O.
Nota
Quando
parallelism
è impostato suOVERSUBSCRIBE
oHIGH
(impostazione predefinita), durante il caricamento openCypher dei dati esiste il rischio che i thread incontrino una condizione di gara e si verifichino un punto morto, con conseguente errore.LOAD_DATA_DEADLOCK
In questo caso, impostareparallelism
su un'impostazione inferiore e riprovare a eseguire il caricamento. Se il processo di caricamento include più richieste di caricamento, utilizzare il parametro
queueRequest
. L'impostazione diqueueRequest
suTRUE
consente a Neptune di mettere in coda le richieste in modo da non dover aspettare che una finisca prima di inviarne un'altra.Se le richieste di caricamento vengono messe in coda, è possibile impostare i livelli di dipendenza utilizzando il parametro
dependencies
, in modo che l'esito negativo di un processo causi l'esito negativo dei processi dipendenti. In questo modo è possibile evitare incongruenze nei dati caricati.-
Se un processo di caricamento prevede l'aggiornamento di valori caricati in precedenza, assicurarsi di impostare il parametro
updateSingleCardinalityProperties
suTRUE
. In caso contrario, lo strumento di caricamento considererà un errore il tentativo di aggiornare un valore di cardinalità singola esistente. Per i dati Gremlin, la cardinalità è specificata anche nelle intestazioni di colonna di proprietà (vedi Intestazioni di colonna delle proprietà).Nota
Il
updateSingleCardinalityProperties
parametro non è disponibile per i dati del Resource Description Framework (RDF). È possibile utilizzare il parametro
failOnError
per determinare se le operazioni di caricamento in blocco devono avere esito negativo o continuare quando si verifica un errore. Inoltre, è possibile utilizzare il parametromode
per assicurarsi che un processo di caricamento riprenda il caricamento dal punto in cui un processo precedente ha avuto esito negativo anziché ricaricare i dati che erano già stati caricati.
-
-
Aumentare la capacità: impostare l'istanza di scrittura del cluster database sulla dimensione massima prima del caricamento in blocco. Tenere presente che se si esegue questa operazione, è necessario aumentare la capacità anche di tutte le istanze di replica di lettura nel cluster database o rimuoverle fino al termine del caricamento dei dati.
Una volta completato il caricamento in blocco, assicurarsi di dimensionare nuovamente l'istanza di scrittura.
Importante
Se si verifica un ciclo di riavvii ripetuti delle repliche di lettura a causa del ritardo di replica durante un caricamento in blocco, è probabile che le repliche non riescano a stare al passo con l'istanza di scrittura nel cluster database. Dimensionare le istanze di lettura in modo che siano più grandi dell'istanza di scrittura oppure rimuoverle temporaneamente durante il caricamento in blocco e quindi ricrearle al termine dell'operazione.
Vedi Parametri della richiesta per maggiori dettagli sull'impostazione dei parametri di richiesta dello strumento di caricamento.