Comando dello strumento di caricamento 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à.

Comando dello strumento di caricamento Neptune

Carica i dati da un bucket Amazon S3 in un'istanza database Neptune.

Per caricare i dati, devi inviare una HTTP POST richiesta all'endpoint. https://your-neptune-endpoint:port/loader I parametri per la loader richiesta possono essere inviati nel POST corpo o come parametri URL -encoded.

Importante

Il MIME tipo deve essere. application/json

Il bucket S3 deve trovarsi nella stessa AWS regione del cluster.

Nota

È possibile caricare i dati crittografati da Amazon S3 se sono stati crittografati utilizzando la modalità SSE-S3 di Amazon S3. In questo caso, Neptune è in grado di impersonare le credenziali dell'utente e di effettuare chiamate a s3:getObject per conto dell'utente.

Puoi anche caricare dati crittografati da Amazon S3 che sono stati crittografati utilizzando questa SSE-KMS modalità, purché il tuo IAM ruolo includa le autorizzazioni necessarie per l'accesso. AWS KMS Senza AWS KMS le autorizzazioni appropriate, l'operazione di caricamento in blocco non riesce e restituisce una risposta. LOAD_FAILED

Neptune non supporta attualmente il caricamento di dati Amazon S3 crittografati utilizzando la modalità SSE-C.

Non è necessario attendere il completamento di un processo di caricamento prima di iniziarne un altro. Neptune può accodare fino a 64 richieste di processo alla volta, a condizione che i relativi parametri queueRequest siano tutti impostati su "TRUE". L'ordine di coda dei lavori sarà first-in-first-out (). FIFO Se invece non si desidera che un processo di caricamento sia messo in coda, è possibile impostare il relativo parametro queueRequest su "FALSE" (valore predefinito), in modo che il caricamento abbia esito negativo se ne è già in corso un altro.

È possibile utilizzare il parametro dependencies per accodare un'attività che deve essere eseguita solo dopo che le attività precedenti specificate nella coda sono state completate correttamente. Se si esegue questa operazione e uno qualsiasi di queste attività specificate non riesce, l'attività non verrà eseguita e il relativo stato verrà impostato su LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

Sintassi della richiesta dello strumento di caricamento Neptune

{ "source" : "string", "format" : "string", "iamRoleArn" : "string", "mode": "NEW|RESUME|AUTO", "region" : "us-east-1", "failOnError" : "string", "parallelism" : "string", "parserConfiguration" : { "baseUri" : "http://base-uri-string", "namedGraphUri" : "http://named-graph-string" }, "updateSingleCardinalityProperties" : "string", "queueRequest" : "TRUE", "dependencies" : ["load_A_id", "load_B_id"] }

Parametri della richiesta dello dello strumento di caricamento Neptune

  • source— Un Amazon S3URI.

    Il SOURCE parametro accetta un Amazon S3 URI che identifica un singolo file, più file, una cartella o più cartelle. Neptune carica ogni file di dati in qualsiasi cartella specificata.

    URIPuò essere in uno dei seguenti formati.

    • s3://bucket_name/object-key-name

    • https://s3.amazonaws.com/bucket_name/object-key-name

    • https://s3.us-east-1.amazonaws.com/bucket_name/object-key-name

    L'object-key-nameelemento di URI è equivalente al parametro prefix in una chiamata Amazon ListObjectsAPIS3. Identifica tutti gli oggetti nel bucket Amazon S3 specificato i cui nomi iniziano con il prefisso specificato. Può trattarsi di un singolo file o una singola cartella oppure di più file e/o cartelle.

    La cartella o le cartelle specificate possono contenere più file di vertici e più file di archi.

    Ad esempio, se avevi la seguente struttura di cartelle e i seguenti file in un bucket Amazon S3 denominato: bucket-name

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade s3://bucket-name/bcd

    Se il parametro source è specificato comes3://bucket-name/a, verranno caricati i primi tre file.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
  • format: formato dei dati. Per ulteriori informazioni sui formati di dati per il comando Neptune Loader, vedi Uso dello strumento di caricamento in blocco Amazon Neptune per importare i dati.

    Valori consentiti
  • iamRoleArn— Amazon Resource Name (ARN) per un IAM ruolo che deve essere assunto dall'istanza DB Neptune per l'accesso al bucket S3. Per informazioni su come creare un ruolo che abbia accesso ad Amazon S3 e su come associarlo a un cluster Neptune, vedi Prerequisiti: IAM ruolo e accesso ad Amazon S3.

    A partire dalla versione 1.2.1.0.R3 del motore, puoi anche concatenare più ruoli IAM se l'istanza DB Neptune e il bucket Amazon S3 si trovano in account diversi. AWS In questo caso, iamRoleArn contiene un elenco di ruoli separati da virgole, come descritto in. ARNs Concatenamento IAM dei ruoli in Amazon Neptune Per esempio:

    curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://(the target bucket name)/(the target date file name)", "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)", "format" : "csv", "region" : "us-east-1" }'
  • region— Il region parametro deve corrispondere alla AWS regione del cluster e al bucket S3.

    Amazon Neptune è disponibile nelle seguenti regioni :

    • Stati Uniti orientali (Virginia settentrionale): us-east-1

    • Stati Uniti orientali (Ohio): us-east-2

    • Stati Uniti occidentali (California settentrionale): us-west-1

    • Stati Uniti occidentali (Oregon): us-west-2

    • Canada (Centrale): ca-central-1

    • Sud America (San Paolo): sa-east-1

    • Europa (Stoccolma): eu-north-1

    • Europa (Irlanda): eu-west-1

    • Europa (Londra): eu-west-2

    • Europa (Parigi): eu-west-3

    • Europa (Francoforte): eu-central-1

    • Medio Oriente (Bahrein): me-south-1

    • Medio Oriente ()UAE: me-central-1

    • Israele (Tel Aviv):   il-central-1

    • Africa (Città del Capo): af-south-1

    • Asia Pacifico (Hong Kong): ap-east-1

    • Asia Pacifico (Tokyo): ap-northeast-1

    • Asia Pacifico (Seoul): ap-northeast-2

    • Asia Pacifico (Osaka): ap-northeast-3

    • Asia Pacifico (Singapore): ap-southeast-1

    • Asia Pacifico (Sydney): ap-southeast-2

    • Asia Pacifico (Mumbai): ap-south-1

    • Cina (Pechino): cn-north-1

    • Cina (Ningxia): cn-northwest-1

    • AWS GovCloud (Stati Uniti occidentali): us-gov-west-1

    • AWS GovCloud (Stati Uniti orientali): us-gov-east-1

  • mode: modalità del processo di caricamento.

    Valori consentiti: RESUME, NEW, AUTO.

    Valore predefinito: AUTO

    • RESUME— In RESUME modalità, il loader cerca un carico precedente da questa fonte e, se ne trova uno, riprende il processo di caricamento. Se non viene trovata alcuna attività di caricamento precedente, il loader si arresta.

      Il loader evita di ricaricare i file caricati correttamente in un'attività precedente. Tenta di elaborare solo i file non caricati. Se sono stati eliminati i dati caricati in precedenza dal cluster Neptune, tali dati non vengono ricaricati in questa modalità. Se un processo di caricamento precedente ha caricato correttamente tutti i file dalla stessa origine, nulla viene ricaricato e lo strumento di caricamento restituisce un risultato positivo.

    • NEW— In NEW modalità, crea una nuova richiesta di carico indipendentemente dai carichi precedenti. Questa modalità può essere utilizzata per ricaricare tutti i dati provenienti da un'origine dopo che sono stati eliminati dati caricati precedentemente dal cluster Neptune o per caricare nuovi dati disponibili nella stessa origine.

    • AUTO— In AUTO modalità, il loader cerca un processo di caricamento precedente dalla stessa fonte e, se ne trova uno, riprende quel lavoro, proprio come in modalità. RESUME

      Se il loader non trova un'attività di caricamento precedente dalla stessa origine, carica tutti i dati dall'origine, proprio come in modalità NEW.

  • failOnError: un flag per attivare un arresto completo in caso di errore.

    Valori consentiti: "TRUE", "FALSE".

    Valore predefinito: "TRUE".

    Quando questo parametro è impostato su "FALSE", il loader tenta di caricare tutti i dati nella posizione specificata, saltando eventuali voci con errori.

    Quando questo parametro è impostato su "TRUE", il loader si arresta non appena rileva un errore. I dati caricati fino a quel punto persistono.

  • parallelism: si tratta di un parametro facoltativo che può essere impostato per ridurre il numero di thread utilizzati dal processo di caricamento in blocco.

    Valori consentiti:

    • LOW— Il numero di thread utilizzati è il numero di thread disponibili vCPUs diviso per 8.

    • MEDIUM— Il numero di thread utilizzati è il numero di thread disponibili vCPUs diviso per 2.

    • HIGH— Il numero di thread utilizzati è uguale al numero di thread disponibili. vCPUs

    • OVERSUBSCRIBE— Il numero di thread utilizzati è il numero di thread disponibili vCPUs moltiplicato per 2. Se viene utilizzato questo valore, il bulk loader occupa tutte le risorse disponibili.

      Ciò non significa, tuttavia, che l'OVERSUBSCRIBEimpostazione comporti un utilizzo del 100%CPU. Poiché l'operazione di carico è limitata all'I/O, l'CPUutilizzo massimo previsto è compreso tra il 60% e il 70%.

    Valore predefinito: HIGH

    L'parallelismimpostazione a volte può causare un deadlock tra i thread durante il caricamento dei dati. openCypher Quando ciò accade, Neptune restituisce l'errore LOAD_DATA_DEADLOCK. Di solito è possibile risolvere il problema impostando parallelism su un valore inferiore e riprovando il comando di caricamento.

  • parserConfiguration: un oggetto opzionale con valori di configurazione del parser aggiuntivi. Ciascuno dei parametri figlio è anche facoltativo:

    Nome Valore di esempio Descrizione
    namedGraphUri http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph Il grafico predefinito per tutti i RDF formati quando non viene specificato alcun grafico (per i formati non quad e le NQUAD voci senza grafico). Il valore predefinito è http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph.
    baseUri http://aws.amazon.com/neptune/default La base URI per i formatiRDF/XMLe Turtle. Il valore predefinito è http://aws.amazon.com/neptune/default.
    allowEmptyStrings true

    Gli utenti di Gremlin devono essere in grado di passare valori di stringa vuoti («») come proprietà dei nodi e degli spigoli durante il caricamento dei dati. CSV Se allowEmptyStrings è impostato su false (valore predefinito), le stringhe vuote vengono trattate come valori null e non vengono caricate.

    Se allowEmptyStrings è impostato su true, lo strumento di caricamento considera le stringhe vuote come valori di proprietà validi e le carica di conseguenza.

    Per ulteriori informazioni, consulta SPARQLGrafico predefinito e grafici con nome.

  • updateSingleCardinalityProperties: è un parametro facoltativo che controlla il modo in cui lo strumento di caricamento in blocco tratta un nuovo valore per le proprietà di vertici o archi a cardinalità singola. Questo non è supportato per il caricamento openCypher dei dati (vediCaricamento dei dati openCypher ).

    Valori consentiti: "TRUE", "FALSE".

    Valore predefinito: "FALSE".

    Come impostazione predefinita o quando updateSingleCardinalityProperties è impostato esplicitamente su "FALSE", il loader considera un nuovo valore come un errore, perché viola la cardinalità singola.

    Quando updateSingleCardinalityProperties è impostato invece su "TRUE", il bulk loader sostituisce il valore esistente con quello nuovo. Se valori di proprietà multipli edge o vertice a cardinalità singola vengono forniti nei file di origine caricati, il valore finale alla fine del caricamento in blocco potrebbe essere uno qualsiasi di questi nuovi valori. Il loader garantisce solo che il valore esistente è stato sostituito da uno di quelli nuovi.

  • queueRequest: si tratta di un parametro flag opzionale che indica se la richiesta di caricamento può essere accodata o meno.

    Non è necessario attendere il completamento di un processo di caricamento prima di emettere quello successivo, perché Neptune può accodare fino a 64 processi alla volta, a condizione che i relativi parametri queueRequest siano tutti impostati su "TRUE". L'ordine di coda dei lavori sarà first-in-first-out (FIFO).

    Se il parametro queueRequest viene omesso o impostato su "FALSE", la richiesta di caricamento avrà esito negativo se un'altra attività di caricamento è già in esecuzione.

    Valori consentiti: "TRUE", "FALSE".

    Valore predefinito: "FALSE".

  • dependencies: si tratta di un parametro facoltativo che può rendere subordinata una richiesta di caricamento in coda al completamento di uno o più processi precedenti nella coda.

    Neptune può accodare fino a 64 richieste di caricamento alla volta, se i relativi parametri queueRequest sono impostati su "TRUE". Il parametro dependencies consente di rendere l'esecuzione di tale richiesta in coda dipendente dal completamento corretto di una o più richieste precedenti specificate nella coda.

    Ad esempio, se Job-A e Job-B del caricamento sono indipendenti l'una dall'altra, ma Job-C richiede che Job-A e Job-B siano completate prima del suo avvio, procedere come segue:

    1. Inviare load-job-A e load-job-B una dopo l'altra in qualsiasi ordine e salvare i loro id di caricamento.

    2. Inviare load-job-C con gli id di caricamento delle due attività nel campo dependencies:

    "dependencies" : ["job_A_load_id", "job_B_load_id"]

    A causa del parametro dependencies, il bulk loader non avvia Job-C fino a quando Job-A e Job-B non sono state completate correttamente. Se una di queste attività non riesce, l'attività non verrà eseguita e il suo stato sarà impostato su LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

    È possibile impostare più livelli di dipendenza in questo modo, in modo che l'errore di un'attività causi l'annullamento di tutte le richieste direttamente o indirettamente dipendenti da essa.

  • userProvidedEdgeIds— Questo parametro è richiesto solo quando si caricano openCypher dati che contengono una relazioneIDs. Deve essere incluso e impostato su True quando la openCypher relazione IDs viene fornita esplicitamente nei dati di caricamento (scelta consigliata).

    Se userProvidedEdgeIds è assente o è impostato su True, in ogni file delle relazioni all'interno del caricamento deve esistere una colonna :ID.

    Se userProvidedEdgeIds è presente ed è impostato su False, i file delle relazioni all'interno del caricamento non devono contenere una colonna :ID. Lo strumento di caricamento Neptune genera automaticamente un ID per ogni relazione.

    È utile fornire una relazione in modo IDs esplicito in modo che il caricatore possa riprendere il caricamento dopo la correzione dell'errore nei CSV dati, senza dover ricaricare le relazioni già caricate. Se la relazione IDs non è stata assegnata in modo esplicito, il loader non può riprendere un caricamento non riuscito se è stato necessario correggere un file di relazione e deve invece ricaricare tutte le relazioni.

  • accessKey[deprecato] Un ID della chiave di accesso di un IAM ruolo con accesso al bucket S3 e ai file di dati.

    Il parametro iamRoleArn è invece consigliato. Per informazioni su come creare un ruolo che abbia accesso ad Amazon S3 e su come associarlo a un cluster Neptune, vedi Prerequisiti: IAM ruolo e accesso ad Amazon S3.

    Per ulteriori informazioni, consulta l'argomento relativo alle chiavi di accesso (ID chiave di accesso e chiave di accesso segreta).

  • secretKey: [obsoleto] il parametro iamRoleArn è invece consigliato. Per informazioni su come creare un ruolo che abbia accesso ad Amazon S3 e su come associarlo a un cluster Neptune, vedi Prerequisiti: IAM ruolo e accesso ad Amazon S3.

    Per ulteriori informazioni, consulta l'argomento relativo alle chiavi di accesso (ID chiave di accesso e chiave di accesso segreta).

Considerazioni speciali per il caricamento dei dati openCypher

  • Quando si caricano openCypher dati in CSV formato, il parametro di formato deve essere impostato suopencypher.

  • Il updateSingleCardinalityProperties parametro non è supportato per i openCypher carichi perché tutte le openCypher proprietà hanno un'unica cardinalità. Il formato di openCypher caricamento non supporta gli array e se un valore ID appare più di una volta, viene considerato un duplicato o un errore di inserimento (vedi sotto).

  • Il loader Neptune gestisce i duplicati che incontra nei dati come segue: openCypher

    • Se lo strumento di caricamento incontra più righe con lo stesso ID nodo, queste vengono unite utilizzando la seguente regola:

      • Tutte le etichette nelle righe vengono aggiunte al nodo.

      • Per ogni proprietà, viene caricato solo uno dei valori della proprietà. La selezione di quello da caricare non è deterministica.

    • Se lo strumento di caricamento incontra più righe con lo stesso ID relazione, ne viene caricata solo una. La selezione di quella da caricare non è deterministica.

    • Lo strumento di caricamento non aggiorna mai i valori delle proprietà di un nodo o di una relazione esistente nel database se incontra dati di caricamento con l'ID del nodo o della relazione esistente. Tuttavia, carica le etichette e le proprietà dei nodi che non sono presenti nel nodo o nella relazione esistente.

  • Sebbene non sia necessario eseguire assegnazioni IDs alle relazioni, di solito è una buona idea (vedi il parametro sopra riportato). userProvidedEdgeIds Senza una relazione esplicitaIDs, il caricatore deve ricaricare tutte le relazioni in caso di errore in un file di relazione, anziché riprendere il caricamento dal punto in cui non era riuscito.

    Inoltre, se i dati di caricamento non contengono una relazione esplicitaIDs, il loader non ha modo di rilevare relazioni duplicate.

Ecco un esempio di comando load: openCypher

curl -X POST https://your-neptune-endpoint:port/loader \ -H 'Content-Type: application/json' \ -d ' { "source" : "s3://bucket-name/object-key-name", "format" : "opencypher", "userProvidedEdgeIds": "TRUE", "iamRoleArn" : "arn:aws:iam::account-id:role/role-name", "region" : "region", "failOnError" : "FALSE", "parallelism" : "MEDIUM", }'

La risposta strumento di caricamento è la stessa del normale. Per esempio:

{ "status" : "200 OK", "payload" : { "loadId" : "guid_as_string" } }

Sintassi della risposta dello strumento di caricamento Neptune

{ "status" : "200 OK", "payload" : { "loadId" : "guid_as_string" } }
200 OK

Il processo di caricamento avviato correttamente restituisce il codice 200.

Errori dello strumento di caricamento Neptune

Quando si verifica un errore, viene restituito un JSON oggetto nella BODY risposta. L'oggetto message contiene una descrizione dell'errore.

Categorie di errore
  • Error 400— Gli errori di sintassi restituiscono un errore di richiesta HTTP 400 errato. Il messaggio descrive l'errore.

  • Error 500— Una richiesta valida che non può essere elaborata restituisce un errore HTTP 500 interno del server. Il messaggio descrive l'errore.

Di seguito sono riportati i possibili messaggi di errore dello strumento di caricamento con la relativa descrizione.

Messaggi di errore dello strumento di caricamento
  • Couldn't find the AWS credential for iam_role_arn(HTTP400)

    Non è stato possibile trovare le credenziali. Verifica le credenziali fornite sulla IAM console o sull' AWS CLI output. Assicurati di aver aggiunto il IAM ruolo specificato in iamRoleArn al cluster.

  • S3 bucket not found for source(HTTP400)

    Il bucket S3 non esiste. Verifica il nome del bucket.

  • The source source-uri does not exist/not reachable(HTTP400)

    Non sono stati trovati file corrispondenti nel bucket S3.

  • Unable to connect to S3 endpoint. Provided source = source-uri and region = aws-region(HTTP500)

    Non è stato possibile connettersi ad Amazon S3. La regione deve corrispondere alla regione del cluster. Assicurati di avere un VPC endpoint. Per informazioni sulla creazione di un VPC endpoint, consulta. Creazione di un endpoint Amazon S3 VPC

  • Bucket is not in provided Region (aws-region)(HTTP400)

    Il bucket deve trovarsi nella stessa AWS regione dell'istanza DB di Neptune.

  • Unable to perform S3 list operation(400) HTTP

    L'IAMutente o il ruolo fornito non dispone List delle autorizzazioni per il bucket o la cartella. Controlla la politica o l'elenco di controllo degli accessi (ACL) sul bucket.

  • Start new load operation not permitted on a read replica instance(HTTP405)

    Il caricamento è un'operazione di scrittura. Riprova a caricare sull'endpoint del cluster di lettura/scrittura.

  • Failed to start load because of unknown error from S3(HTTP500)

    Amazon S3 ha restituito un errore sconosciuto. Contattare AWS Support.

  • Invalid S3 access key(HTTP400)

    La chiave di accesso non è valida. Controlla le credenziali fornite.

  • Invalid S3 secret key(HTTP400)

    La chiave privata non è valida. Controlla le credenziali fornite.

  • Max concurrent load limit breached(HTTP400)

    Se una richiesta di caricamento viene inviata senza "queueRequest" : "TRUE", e un'attività di caricamento è attualmente in esecuzione, la richiesta avrà esito negativo con questo errore.

  • Failed to start new load for the source "source name". Max load task queue size limit breached. Limit is 64(HTTP400)

    Neptune supporta l'accodamento di un massimo di 64 processi dello strumento di caricamento alla volta. Se una richiesta di caricamento aggiuntiva viene inviata alla coda quando contiene già 64 attività, la richiesta non riesce con questo messaggio.

Esempi di strumento di caricamento Neptune

Esempio Richiesta

Di seguito è riportata una richiesta inviata HTTP POST tramite il curl comando. Carica un file nel formato CSV Neptune. Per ulteriori informazioni, consulta Formato dati di caricamento Gremlin.

curl -X POST \ -H 'Content-Type: application/json' \ https://your-neptune-endpoint:port/loader -d ' { "source" : "s3://bucket-name/object-key-name", "format" : "csv", "iamRoleArn" : "ARN for the IAM role you are using", "region" : "region", "failOnError" : "FALSE", "parallelism" : "MEDIUM", "updateSingleCardinalityProperties" : "FALSE", "queueRequest" : "FALSE" }'
Esempio Risposta
{ "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }