Commande de chargeur Neptune - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Commande de chargeur Neptune

Charge les données d'un compartiment Amazon S3 dans une instance de base de données Neptune.

Pour charger des données, vous devez envoyer une HTTP POST demande au https://your-neptune-endpoint:port/loader point de terminaison. Les paramètres de la loader demande peuvent être envoyés dans le POST corps ou sous forme de paramètres URL codés.

Important

Le MIME type doit êtreapplication/json.

Le compartiment S3 doit se trouver dans la même AWS région que le cluster.

Note

Vous pouvez charger des données chiffrées à partir d'Amazon S3 si elles ont été chiffrées avec le mode SSE-S3 d'Amazon S3. Dans ce cas, Neptune peut emprunter vos informations d'identification et émettre des appels s3:getObject en votre nom.

Vous pouvez également charger des données chiffrées depuis Amazon S3 qui ont été chiffrées à l'aide de ce SSE-KMS mode, à condition que votre IAM rôle inclut les autorisations d'accès nécessaires AWS KMS. Sans AWS KMS autorisations appropriées, l'opération de chargement en bloc échoue et renvoie une LOAD_FAILED réponse.

Neptune ne permet actuellement pas le chargement des données chiffrées Amazon S3 avec le mode SSE-C.

Il n'est pas nécessaire d'attendre la fin d'une tâche de chargement avant d'en commencer une autre. Neptune peut mettre en file d'attente jusqu'à 64 demandes de tâche à la fois, si leurs paramètres queueRequest sont définis sur "TRUE". L'ordre des tâches dans la file d'attente sera first-in-first-out (FIFO). En revanche, si vous ne voulez pas qu'une tâche de chargement soit mise en file d'attente, vous pouvez définir son paramètre queueRequest sur "FALSE" (valeur par défaut), de sorte que la tâche de chargement échoue si une autre est déjà en cours.

Vous pouvez utiliser le paramètre dependencies pour mettre en file d'attente une tâche qui doit être exécutée uniquement une fois que les tâches précédentes spécifiées dans la file d'attente se sont achevées correctement. Si vous faites cela et que l'une des tâches spécifiées échoue, votre tâche ne sera pas exécutée et son statut sera défini sur LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

Syntaxe des demandes du chargeur 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"] }

Paramètres de demande du chargeur Neptune

  • source— Un Amazon S3URI.

    Le SOURCE paramètre accepte un Amazon S3 URI qui identifie un seul fichier, plusieurs fichiers, un ou plusieurs dossiers. Neptune charge tous les fichiers de données dans n'importe quel dossier spécifié.

    Ils URI peuvent être dans l'un des formats suivants.

    • 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-nameélément de URI est équivalent au paramètre de préfixe dans un ListObjectsAPIappel Amazon S3. Il identifie tous les objets du compartiment Amazon S3 spécifié dont le nom commence par ce préfixe. Il peut s'agir d'un seul fichier, d'un seul dossier, de plusieurs fichiers et/ou de plusieurs dossiers.

    Le dossier spécifié peut contenir plusieurs fichiers de sommet et plusieurs fichiers d'arête.

    Par exemple, si vous disposiez de la structure de dossiers et des fichiers suivants dans un compartiment Amazon S3 nommé bucket-name :

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

    Si le paramètre source est spécifié commes3://bucket-name/a, les trois premiers fichiers seront chargés.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
  • format : format des données. Pour plus d'informations sur les formats de données pour la commande Loader Neptune, consultez Utilisation du chargeur en bloc Amazon Neptune pour ingérer des données.

    Valeurs autorisées
  • iamRoleArn— Le nom de ressource Amazon (ARN) pour un IAM rôle à assumer par l'instance de base de données Neptune pour accéder au compartiment S3. Pour plus d'informations sur la création d'un rôle ayant accès à Amazon S3 et sur son association à un cluster Neptune, consultez Conditions préalables : IAM rôle et accès Amazon S3.

    À partir de la version 1.2.1.0.R3 du moteur, vous pouvez également enchaîner plusieurs rôles IAM si l'instance de base de données Neptune et le compartiment Amazon S3 se trouvent dans des comptes différents. AWS Dans ce cas, iamRoleArn contient une liste de rôles séparés par des virgulesARNs, comme décrit dans. Enchaînement IAM des rôles dans Amazon Neptune Par exemple :

    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— Le region paramètre doit correspondre à la AWS région du cluster et au compartiment S3.

    Amazon Neptune est disponible dans les régions suivantes :

    • USA Est (Virginie du Nord) : us-east-1

    • USA Est (Ohio) : us-east-2

    • USA Ouest (Californie du Nord) : us-west-1

    • USA Ouest (Oregon) : us-west-2

    • Canada (Centre) : ca-central-1

    • Amérique du Sud (São Paulo) : sa-east-1

    • Europe (Stockholm) : eu-north-1

    • Europe (Irlande) : eu-west-1

    • Europe (Londres) : eu-west-2

    • Europe (Paris) : eu-west-3

    • Europe (Francfort) : eu-central-1

    • Moyen-Orient (Bahreïn) : me-south-1

    • Moyen-Orient (UAE) : me-central-1

    • Israël (Tel Aviv) : il-central-1

    • Afrique (Le Cap) : af-south-1

    • Asie-Pacifique (Hong Kong) : ap-east-1

    • Asie-Pacifique (Tokyo) : ap-northeast-1

    • Asie-Pacifique (Séoul) : ap-northeast-2

    • Asie-Pacifique (Osaka) : ap-northeast-3

    • Asie-Pacifique (Singapour) : ap-southeast-1

    • Asie-Pacifique (Sydney) : ap-southeast-2

    • Asie-Pacifique (Mumbai) : ap-south-1

    • Chine (Beijing) : cn-north-1

    • Chine (Ningxia) : cn-northwest-1

    • AWS GovCloud (US-Ouest) : us-gov-west-1

    • AWS GovCloud (USA Est) : us-gov-east-1

  • mode : mode de la tâche de chargement.

    Valeurs autorisées : RESUME, NEW, AUTO

    Valeur par défaut : AUTO

    • RESUME— En RESUME mode, le chargeur recherche une charge précédente à partir de cette source et, s'il en trouve une, reprend cette tâche de chargement. Si aucune tâche de chargement précédente n'est trouvée, le chargeur s'arrête.

      Le chargeur évite de recharger les fichiers qui ont été chargés avec succès lors d'une tâche précédente. Il essaie uniquement de traiter les fichiers ayant échoué. Si vous aviez supprimé des données précédemment chargées à partir de votre cluster Neptune, ces données ne sont pas rechargées dans ce mode. Si une tâche de chargement précédente a chargé tous les fichiers de la même source avec succès, rien n'est rechargé, et le chargeur renvoie une réussite.

    • NEW— En NEW mode, crée une nouvelle demande de chargement indépendamment des chargements précédents. Vous pouvez utiliser ce mode pour recharger toutes les données d'une source après la suppression de données précédemment chargées à partir de votre cluster Neptune ou pour charger de nouvelles données disponibles sur la même source.

    • AUTO— En AUTO mode, le chargeur recherche une tâche de chargement précédente provenant de la même source et, s'il en trouve une, reprend cette tâche, comme en RESUME mode.

      Si le chargeur ne trouve pas de tâche de chargement précédente à partir de la même source, il charge toutes les données de la source, exactement comme en mode NEW.

  • failOnError : indicateur permettant d'activer un arrêt complet au niveau d'une erreur.

    Valeurs autorisées : "TRUE", "FALSE".

    Valeur par défaut : "TRUE".

    Lorsque ce paramètre est défini sur "FALSE", le chargeur essaie de charger toutes les données à l'emplacement spécifié, en ignorant les entrées contenant des erreurs.

    Lorsque ce paramètre est défini sur "TRUE", le chargeur s'arrête dès qu'il rencontre une erreur. Les données chargées jusqu'à ce point persistent.

  • parallelism : paramètre facultatif qui peut être défini de façon à réduire le nombre de threads utilisés par le processus de chargement en bloc.

    Valeurs autorisées :

    • LOW— Le nombre de fils utilisés est le nombre de fils disponibles vCPUs divisé par 8.

    • MEDIUM— Le nombre de fils utilisés est le nombre de fils disponibles vCPUs divisé par 2.

    • HIGH— Le nombre de threads utilisés est le même que le nombre de threads disponiblesvCPUs.

    • OVERSUBSCRIBE— Le nombre de fils utilisés est le nombre de fils disponibles vCPUs multiplié par 2. Si cette valeur est utilisée, le chargeur en bloc accepte toutes les ressources disponibles.

      Cela ne signifie toutefois pas que le OVERSUBSCRIBE paramètre entraîne une CPU utilisation à 100 %. Comme l'opération de charge est liée aux E/S, le taux d'CPUutilisation le plus élevé auquel on peut s'attendre se situe entre 60 % et 70 %.

    Valeur par défaut : HIGH

    Ce parallelism paramètre peut parfois entraîner un blocage entre les threads lors du chargement openCypher des données. Lorsque cela se produit, Neptune renvoie le message d'erreur LOAD_DATA_DEADLOCK. Vous pouvez généralement résoudre le problème en définissant un paramètre parallelism inférieur et en soumettant la commande de chargement à une nouvelle tentative.

  • parserConfiguration : objet facultatif avec des valeurs de configuration d'analyseur supplémentaires. Chacun des paramètres enfants est également facultatif :

    Nom Exemple de valeur Description
    namedGraphUri http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph Le graphique par défaut pour tous les RDF formats lorsqu'aucun graphique n'est spécifié (pour les formats autres que les quads et NQUAD les entrées sans graphique). La valeur par défaut est http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph.
    baseUri http://aws.amazon.com/neptune/default La base URI des formatsRDF/XMLet Turtle. L’argument par défaut est http://aws.amazon.com/neptune/default.
    allowEmptyStrings true

    Les utilisateurs de Gremlin doivent être en mesure de transmettre des valeurs de chaîne vides (« ») en tant que propriétés de nœud et de bord lors du chargement de CSV données. Si la valeur allowEmptyStrings est définie sur false (valeur par défaut), ces chaînes vides sont traitées comme des valeurs nulles et ne sont pas chargées.

    Si la valeur allowEmptyStrings est définie sur true, le chargeur traite les chaînes vides comme des valeurs de propriété valides et les charge en conséquence.

    Pour de plus amples informations, veuillez consulter SPARQLGraphe par défaut et graphes nommés.

  • updateSingleCardinalityProperties : paramètre facultatif qui contrôle la façon dont le chargeur en bloc traite une nouvelle valeur pour les propriétés de sommet ou d'arête à cardinalité unique. Cela n'est pas pris en charge pour le chargement de openCypher données (voirChargement openCypher des données).

    Valeurs autorisées : "TRUE", "FALSE".

    Valeur par défaut : "FALSE".

    Par défaut, ou lorsque updateSingleCardinalityProperties est explicitement défini sur "FALSE", le chargeur traite une nouvelle valeur comme une erreur, car elle ne respecte pas la cardinalité unique.

    En revanche, lorsque updateSingleCardinalityProperties est défini sur "TRUE", le chargeur en bloc remplace la valeur existante par la nouvelle. Si plusieurs valeurs de propriété de sommet à cardinalité unique ou d'arête sont fournies dans le ou les fichiers source en cours de chargement, la valeur finale à l'issue du chargement en bloc peut être une de ces nouvelles valeurs. Le chargeur garantit uniquement que la valeur existante a été remplacée par une des nouvelles.

  • queueRequest : paramètre d'indicateur facultatif qui indique si la demande de chargement peut être mise en file d'attente ou non.

    Vous n'avez pas besoin d'attendre qu'une tâche de chargement soit terminée avant d'émettre la suivante, car Neptune peut mettre en file d'attente jusqu'à 64 tâches à la fois, si leurs paramètres queueRequest sont tous définis sur "TRUE". L'ordre des tâches dans la file d'attente sera first-in-first-out (FIFO).

    Si le paramètre queueRequest est omis ou défini sur "FALSE", la demande de chargement échouera si une autre tâche de chargement est déjà en cours d'exécution.

    Valeurs autorisées : "TRUE", "FALSE".

    Valeur par défaut : "FALSE".

  • dependencies : paramètre facultatif qui peut subordonner une demande de chargement en file d'attente à la réussite d'une ou de plusieurs tâches précédentes dans la file d'attente.

    Neptune peut mettre en file d'attente jusqu'à 64 requêtes de chargement à la fois, si leurs paramètres queueRequest sont définis sur "TRUE". Le paramètre dependencies vous permet de rendre l'exécution d'une telle requête en file d'attente dépendante de la réussite d'une ou de plusieurs requêtes précédentes spécifiées dans la file d'attente.

    Par exemple, si les charges Job-A et Job-B sont indépendantes l'une de l'autre, mais que la charge Job-C a besoin que Job-A et Job-B soient terminées avant de commencer, procédez comme suit :

    1. Soumettez load-job-A et load-job-B l'une après l'autre dans n'importe quel ordre, et enregistrez leurs ID de chargement.

    2. Soumettez load-job-C avec les ID de chargement des deux tâches dans son domaine dependencies :

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

    En raison du paramètre dependencies, le chargeur en bloc ne démarrera pas Job-C avant que Job-A et Job-B soient terminées avec succès. Si l'une des d'eux échoue, Job-C ne sera pas exécuté et son statut sera défini sur LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

    Vous pouvez configurer plusieurs niveaux de dépendance de cette façon, de sorte que l'échec d'une tâche entraîne l'annulation de toutes les demandes qui en dépendent directement ou indirectement.

  • userProvidedEdgeIds— Ce paramètre est obligatoire uniquement lors du chargement de openCypher données contenant une relationIDs. Il doit être inclus et défini True lorsque les openCypher relations IDs sont explicitement fournies dans les données de chargement (recommandé).

    Quand userProvidedEdgeIds est absent ou défini sur True, une colonne :ID doit être présente dans chaque fichier de relations inclus dans le chargement.

    Quand userProvidedEdgeIds est présent et défini sur False, les fichiers de relations inclus dans le chargement ne doivent pas contenir de colonne :ID. Au lieu de cela, le chargeur Neptune génère automatiquement un ID pour chaque relation.

    Il est utile de fournir une relation de IDs manière explicite afin que le chargeur puisse reprendre le chargement après correction d'une erreur dans les CSV données, sans avoir à recharger les relations déjà chargées. Si aucune relation IDs n'a été explicitement attribuée, le chargeur ne peut pas reprendre un chargement défaillant si un fichier de relations a dû être corrigé, et doit à la place recharger toutes les relations.

  • accessKey[obsolète] ID de clé d'accès d'un IAM rôle ayant accès au compartiment S3 et aux fichiers de données.

    Le paramètre iamRoleArn est recommandé à la place. Pour plus d'informations sur la création d'un rôle ayant accès à Amazon S3 et sur son association à un cluster Neptune, consultez Conditions préalables : IAM rôle et accès Amazon S3.

    Pour plus d'informations, consultez Clés d'accès (ID de clé d'accès et clé d'accès secrète).

  • secretKey : [obsolète] le paramètre iamRoleArn est recommandé à la place. Pour plus d'informations sur la création d'un rôle ayant accès à Amazon S3 et sur son association à un cluster Neptune, consultez Conditions préalables : IAM rôle et accès Amazon S3.

    Pour plus d'informations, consultez Clés d'accès (ID de clé d'accès et clé d'accès secrète).

Considérations spéciales relatives au chargement openCypher des données

  • Lorsque vous openCypher chargez des données au CSV format, le paramètre de format doit être défini suropencypher.

  • Le updateSingleCardinalityProperties paramètre n'est pas pris en charge pour les openCypher charges car toutes les openCypher propriétés ont une cardinalité unique. Le format de openCypher chargement ne prend pas en charge les tableaux, et si une valeur d'ID apparaît plusieurs fois, elle est traitée comme un doublon ou comme une erreur d'insertion (voir ci-dessous).

  • Le chargeur Neptune gère les doublons qu'il trouve dans les données de la manière openCypher suivante :

    • Si le chargeur identifie plusieurs lignes avec le même ID de nœud, elles sont fusionnées selon la règle suivante :

      • Toutes les étiquettes des lignes sont ajoutées au nœud.

      • Pour chaque propriété, une seule des valeurs de propriété est chargée. Le choix de celle à charger n'est pas déterministe.

    • Si le chargeur identifie plusieurs lignes avec le même ID de relation, une seule d'entre elles est chargée. Le choix de celle à charger n'est pas déterministe.

    • Le chargeur ne met jamais à jour les valeurs des propriétés d'un nœud ou d'une relation dans la base de données s'il trouve des données de chargement avec l'ID de ce nœud ou de cette relation. Cependant, il charge les étiquettes et les propriétés des nœuds qui ne se trouvent pas dans le nœud ou la relation existants.

  • Bien que vous n'ayez pas à assigner IDs aux relations, c'est généralement une bonne idée (voir le userProvidedEdgeIds paramètre ci-dessus). En l'absence de relation expliciteIDs, le chargeur doit recharger toutes les relations en cas d'erreur dans un fichier de relations, plutôt que de reprendre le chargement là où il a échoué.

    De plus, si les données de chargement ne contiennent pas de relation expliciteIDs, le chargeur n'a aucun moyen de détecter les relations dupliquées.

Voici un exemple de commande de openCypher chargement :

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 réponse du chargeur est la même que d'habitude. Par exemple :

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

Syntaxe de la réponse du chargeur Neptune

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

Une tâche de chargement démarrée avec succès renvoie un code 200.

Erreurs du chargeur Neptune

Lorsqu'une erreur survient, un JSON objet est renvoyé dans BODY la réponse. L'objet message contient une description de l'erreur.

Catégories d'erreurs
  • Error 400— Les erreurs de syntaxe renvoient une erreur de requête HTTP 400 incorrecte. Le message décrit l'erreur.

  • Error 500— Une demande valide qui ne peut pas être traitée renvoie une erreur HTTP 500 interne au serveur. Le message décrit l'erreur.

Voici les messages d'erreur possibles du chargeur avec une description de l'erreur.

Messages d'erreur du chargeur
  • Couldn't find the AWS credential for iam_role_arn(HTTP400)

    Les informations d'identification n'ont pas été trouvées. Vérifiez les informations d'identification fournies par rapport à la IAM console ou à la AWS CLI sortie. Assurez-vous d'avoir ajouté le IAM rôle spécifié dans iamRoleArn le cluster.

  • S3 bucket not found for source(HTTP400)

    Le compartiment S3 n'existe pas. Vérifiez le nom du compartiment.

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

    Aucun fichier correspondant n'a été trouvé dans le compartiment S3.

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

    Impossible de se connecter à Amazon S3. La région doit correspondre à la région du cluster. Assurez-vous de disposer d'un VPC point de terminaison. Pour plus d'informations sur la création d'un VPC point de terminaison, consultezCréation d'un point de VPC terminaison Amazon S3.

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

    Le bucket doit se trouver dans la même AWS région que votre instance de base de données Neptune.

  • Unable to perform S3 list operation(HTTP400)

    L'IAMutilisateur ou le rôle fourni ne List dispose pas d'autorisations sur le compartiment ou le dossier. Vérifiez la politique ou la liste de contrôle d'accès (ACL) du bucket.

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

    Le chargement est une opération d'écriture. Réessayez le chargement sur le point de terminaison de cluster en lecture/écriture.

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

    Amazon S3 a renvoyé une erreur inconnue. Contactez AWS Support.

  • Invalid S3 access key(HTTP400)

    La clé d'accès n'est pas valide. Vérifiez les informations d'identification fournies.

  • Invalid S3 secret key(HTTP400)

    La clé secrète n'est pas valide. Vérifiez les informations d'identification fournies.

  • Max concurrent load limit breached(HTTP400)

    Si une demande de chargement est soumise sans "queueRequest" : "TRUE", et qu'une tâche de chargement est en cours d'exécution, la demande échouera avec cette erreur.

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

    Neptune prend en charge la mise en file d'attente de jusqu'à 64 tâches de chargeur à la fois. Si une demande de chargement supplémentaire est soumise à la file d'attente alors qu'elle contient déjà 64 tâches, la demande échoue avec ce message.

Exemples de chargeur Neptune

Exemple Demande

Ce qui suit est une demande envoyée à l'HTTPPOSTaide de la curl commande. Il charge un fichier au format NeptuneCSV. Pour de plus amples informations, veuillez consulter Format de chargement de données 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" }'
Exemple Réponse
{ "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }