Ottimizzazione di un caricamento in blocco di Amazon Neptune - Amazon Neptune

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 su OVERSUBSCRIBE o HIGH (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, impostare parallelism 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 di queueRequest su TRUE 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 su TRUE. 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 parametro mode 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.