Comando del programa de carga de Neptune - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Comando del programa de carga de Neptune

Carga datos desde un bucket de Amazon S3 en una instancia de base de datos de Neptune.

Para cargar datos, debe enviar una HTTP POST solicitud al punto finalhttps://your-neptune-endpoint:port/loader. Los parámetros de la loader solicitud se pueden enviar en el POST cuerpo o como parámetros URL codificados.

importante

El MIME tipo debe ser. application/json

El depósito S3 debe estar en la misma AWS región que el clúster.

nota

Puede cargar datos cifrados desde Amazon S3 si se cifran mediante el modo SSE-S3 de Amazon S3. En ese caso, Neptune es capaz de suplantar sus credenciales y emitir llamadas de s3:getObject en su nombre.

También puede cargar datos cifrados de Amazon S3 cifrados mediante este SSE-KMS modo, siempre que su IAM función incluya los permisos de acceso necesarios AWS KMS. Sin AWS KMS los permisos adecuados, la operación de carga masiva falla y devuelve una LOAD_FAILED respuesta.

Actualmente Neptune no admite la carga de datos cifrados de Amazon S3 con el modo SSE-C.

No tiene que esperar a que finalice un trabajo de carga para iniciar otro. Neptune puede poner en cola hasta 64 solicitudes de trabajo a la vez, siempre que todos sus parámetros queueRequest estén configurados como "TRUE". El orden de espera de los trabajos será first-in-first-out (FIFO). Por otro lado, si no desea que un trabajo de carga esté en cola, puede establecer su parámetro queueRequest en "FALSE" (valor predeterminado), de modo que se producirá un error en el trabajo de carga si otro ya está en curso.

Puede utilizar el parámetro dependencies para poner en cola un trabajo que solo debe ejecutarse después de que los trabajos anteriores especificados en la cola se hayan completado correctamente. Si lo hace y se produce un error en cualquiera de esos trabajos especificados, su trabajo no se ejecutará y el estado se establecerá en LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

Sintaxis de las solicitudes del programa de carga de 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"] }

Parámetros de solicitudes del programa de carga de Neptune

  • source— Un Amazon S3URI.

    El SOURCE parámetro acepta un Amazon S3 URI que identifica un único archivo, varios archivos, una carpeta o varias carpetas. Neptune carga todos los archivos de datos de cualquier carpeta especificada.

    URIPuede estar en cualquiera de los siguientes formatos.

    • 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

    El object-key-name elemento de URI es equivalente al parámetro prefijo de una ListObjectsAPIllamada a Amazon S3. Identifica todos los objetos del bucket de Amazon S3 especificado cuyos nombres comienzan con ese prefijo. Puede ser un único archivo o carpeta o varios archivos o carpetas.

    La carpeta o carpetas especificadas pueden contener varios archivos de vértice y varios archivos de borde.

    Por ejemplo, si tuviera la siguiente estructura de carpetas y archivos en un bucket de Amazon S3 denominadobucket-name:

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

    Si el parámetro de origen se especifica comos3://bucket-name/a, se cargarán los tres primeros archivos.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
  • format: el formato de los datos. Para obtener más información acerca de los formatos de los datos para el comando Loader de Neptune, consulte Uso del programa de carga masiva de Amazon Neptune para adquirir datos.

    Valores permitidos
  • iamRoleArn— El nombre del recurso de Amazon (ARN) de un IAM rol que asumirá la instancia de base de datos Neptune para acceder al bucket de S3. Para obtener información acerca de cómo crear un rol con acceso a Amazon S3 y, después, asociarlo a un clúster de Neptune, consulte Requisitos previos: IAM función y acceso a Amazon S3.

    A partir de la versión 1.2.1.0.R3 del motor, también puede encadenar varias funciones IAM si la instancia de base de datos Neptune y el bucket de Amazon S3 están ubicados en cuentas diferentes. AWS En este caso, iamRoleArn contiene una lista de funciones separadas por comas, tal y como se describe en. ARNs Encadenando IAM roles en Amazon Neptune Por ejemplo:

    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— El region parámetro debe coincidir con la AWS región del clúster y el bucket de S3.

    Amazon Neptune está disponible en las siguientes regiones de :

    • Este de EE. UU. (Norte de Virginia): us-east-1

    • Este de EE. UU. (Ohio): us-east-2

    • Oeste de EE. UU. (Norte de California): us-west-1

    • Oeste de EE. UU. (Oregón): us-west-2

    • Canadá (centro): ca-central-1

    • América del Sur (São Paulo): sa-east-1

    • Europa (Estocolmo): eu-north-1

    • Europa (Irlanda): eu-west-1

    • Europa (Londres): eu-west-2

    • Europa (París): eu-west-3

    • Europa (Fráncfort): eu-central-1

    • Medio Oriente (Baréin): me-south-1

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

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

    • África (Ciudad del Cabo): af-south-1

    • Asia Pacífico (Hong Kong): ap-east-1

    • Asia-Pacífico (Tokio): ap-northeast-1

    • Asia-Pacífico (Seúl): ap-northeast-2

    • Asia-Pacífico (Osaka): ap-northeast-3

    • Asia-Pacífico (Singapur): ap-southeast-1

    • Asia-Pacífico (Sídney): ap-southeast-2

    • Asia-Pacífico (Bombay): ap-south-1

    • China (Pekín): cn-north-1

    • China (Ningxia): cn-northwest-1

    • AWS GovCloud (EEUU-Oeste): us-gov-west-1

    • AWS GovCloud (EE. UU.-Este): us-gov-east-1

  • mode: el modo de trabajo de carga.

    Valores permitidos: RESUME, NEW, AUTO.

    Valor predeterminado: AUTO

    • RESUME— En el RESUME modo, el cargador busca una carga anterior de esta fuente y, si encuentra una, reanuda el trabajo de carga. Si no se encuentra ningún trabajo de carga anterior, el programa de carga se detiene.

      El programa de carga evita la recarga de archivos cargados correctamente en un trabajo anterior. Solo intenta procesar los archivos con errores. Si ha eliminado los datos cargados anteriormente del clúster de Neptune, esos datos no se vuelven a cargar en este modo. Si un trabajo de carga anterior ha cargado todos los archivos del mismo origen correctamente, no se vuelve a cargar nada y el programa de carga devuelve una operación correcta.

    • NEW— En el NEW modo, crea una nueva solicitud de carga independientemente de las cargas anteriores. Puede utilizar este modo para volver a cargar todos los datos de un origen después de descartar los datos cargados anteriormente desde el clúster de Neptune o bien para cargar nuevos datos disponibles en el mismo origen.

    • AUTO— En el AUTO modo, el cargador busca un trabajo de carga anterior de la misma fuente y, si encuentra uno, lo reanuda, igual que en el RESUME modo.

      Si el programa de carga no encuentra un trabajo de carga anterior del mismo origen, carga todos los datos del origen, al igual que en el modo NEW.

  • failOnError: un indicador para activar la detención total al encontrar un error.

    Valores permitidos: "TRUE" y "FALSE".

    Valor predeterminado: "TRUE".

    Cuando este parámetro se establece en "FALSE", el programa de carga intenta cargar todos los datos de la ubicación especificada, omitiendo cualquier entrada con errores.

    Cuando este parámetro se establece en "TRUE", el programa de carga se detiene en cuanto encuentra un error. Los datos cargados hasta ese momento persisten.

  • parallelism: es un parámetro opcional que se puede establecer para reducir el número de subprocesos utilizados por el proceso de carga masiva.

    Valores permitidos:

    • LOW— El número de hilos utilizados es el número de hilos disponibles vCPUs dividido entre 8.

    • MEDIUM— El número de hilos utilizados es el número de hilos disponibles vCPUs dividido entre 2.

    • HIGH— El número de hilos utilizados es el mismo que el número de hilos disponiblesvCPUs.

    • OVERSUBSCRIBE— El número de hilos utilizados es el número de hilos disponibles vCPUs multiplicado por 2. Si se utiliza este valor, el programa de carga masiva absorbe todos los recursos disponibles.

      Sin embargo, esto no significa que la OVERSUBSCRIBE configuración dé como resultado una CPU utilización del 100%. Como la operación de carga está limitada a la E/S, la máxima CPU utilización que cabe esperar se sitúa entre el 60 y el 70%.

    Valor predeterminado: HIGH

    En ocasiones, esta parallelism configuración puede provocar un bloqueo entre los subprocesos al cargar openCypher los datos. Cuando esto ocurre, Neptune devuelve el error LOAD_DATA_DEADLOCK. Por lo general, puede solucionar el problema configurando parallelism en un ajuste inferior y volviendo a intentar ejecutar el comando de carga.

  • parserConfiguration: objeto opcional con valores de configuración de analizador adicionales. Cada uno de los parámetros secundarios también es opcional:

    Nombre Ejemplo de valor Descripción
    namedGraphUri http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph El gráfico predeterminado para todos los RDF formatos cuando no se especifica ningún gráfico (para los formatos que no son cuadriláteros y NQUAD las entradas sin gráfico). El valor predeterminado es http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
    baseUri http://aws.amazon.com/neptune/default La base URI para los formatosRDF/XMLy Turtle. El valor predeterminado es http://aws.amazon.com/neptune/default.
    allowEmptyStrings true

    Los usuarios de Gremlin deben poder pasar valores de cadenas vacías («») como propiedades de nodo y borde al cargar CSV datos. Si allowEmptyStrings se establece en false (el valor predeterminado), estas cadenas vacías se tratan como nulas y no se cargan.

    Si allowEmptyStrings se establece en true, el programa de carga trata las cadenas vacías como valores de propiedad válidos y las carga en consecuencia.

    Para obtener más información, consulte SPARQLGráfica predeterminada y gráficas con nombre.

  • updateSingleCardinalityProperties: es un parámetro opcional que controla cómo el programa de carga masiva trata un nuevo valor para las propiedades de vértice o borde de cardinalidad única. Esto no se admite para cargar openCypher datos (consulteCarga de openCypher datos).

    Valores permitidos: "TRUE" y "FALSE".

    Valor predeterminado: "FALSE".

    De forma predeterminada, o cuando updateSingleCardinalityProperties está configurado explícitamente en "FALSE", el programa de carga trata un nuevo valor como un error, porque infringe la cardinalidad única.

    Por el contrario, cuando updateSingleCardinalityProperties está configurado en "TRUE", el programa de carga en bloque reemplaza el valor existente por el nuevo. Si se proporcionan varios valores de propiedades de vértices de borde o de cardinalidad única en los archivos origen que se están cargando, el valor final al terminar la carga masiva podría ser cualquiera de esos nuevos valores. El programa de carga solo garantiza que el valor existente se ha reemplazado por uno de los nuevos.

  • queueRequest: es un parámetro de indicador opcional que indica si la solicitud de carga se puede poner en cola o no.

    No tiene que esperar a que se complete un trabajo de carga antes de emitir el siguiente, porque Neptune puede poner en cola hasta 64 trabajos a la vez, siempre que sus parámetros queueRequest estén configurados en "TRUE". El orden de espera de los trabajos será first-in-first-out (FIFO).

    Si el parámetro queueRequest se omite o se establece en "FALSE", se producirá un error en la solicitud de carga si ya se está ejecutando otro trabajo de carga.

    Valores permitidos: "TRUE" y "FALSE".

    Valor predeterminado: "FALSE".

  • dependencies: se trata de un parámetro opcional que puede supeditar una solicitud de carga en cola a la finalización satisfactoria de uno o más trabajos anteriores de la cola.

    Neptune puede poner en cola hasta 64 solicitudes de carga a la vez, si sus parámetros queueRequest están configurados en "TRUE". El parámetro dependencies le permite hacer que la ejecución de dicha solicitud en cola dependa de la finalización correcta de una o más solicitudes anteriores especificadas en la cola.

    Por ejemplo, si las cargas Job-A y Job-B son independientes entre sí, pero la carga Job-C necesita Job-A y Job-B debe terminar antes de que comience, proceda de la siguiente manera:

    1. Envíe load-job-A y load-job-B uno tras otro en cualquier orden, y guarde sus identificadores de carga.

    2. Envíe load-job-C con los identificadores de carga de los dos trabajos en su campo dependencies:

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

    Debido al parámetro dependencies, el programa de carga en bloque no iniciará Job-C hasta que Job-A y Job-B se hayan completado correctamente. Si se produce un error en alguno de ellos, Job-C no se ejecutará y su estado se establecerá en LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

    Puede configurar varios niveles de dependencia de esta manera, de modo que el error de un trabajo provoque la cancelación de todas las solicitudes que dependen directa o indirectamente de él.

  • userProvidedEdgeIds— Este parámetro solo es necesario cuando se cargan openCypher datos que contienen una relaciónIDs. Debe incluirse y configurarse True cuando las openCypher relaciones IDs se proporcionen de forma explícita en los datos de carga (recomendado).

    Si userProvidedEdgeIds está ausente o se establece en True, debe haber una columna :ID en todos los archivos de relaciones de la carga.

    Cuando userProvidedEdgeIds está presente y se establece en False, los archivos de relaciones de la carga no deben contener ninguna columna :ID. En su lugar, el programa de carga de Neptune genera automáticamente un identificador para cada relación.

    Resulta útil proporcionar la relación de IDs forma explícita para que el cargador pueda reanudar la carga una vez que se haya corregido un error en los CSV datos, sin tener que volver a cargar ninguna relación que ya se haya cargado. Si la relación IDs no se ha asignado explícitamente, el cargador no puede reanudar una carga fallida si se ha tenido que corregir algún archivo de relaciones y, en su lugar, debe volver a cargar todas las relaciones.

  • accessKey[obsoleto] Un identificador de clave de acceso de un IAM rol con acceso al bucket y a los archivos de datos de S3.

    En su lugar, se recomienda el parámetro iamRoleArn. Para obtener información acerca de cómo crear un rol con acceso a Amazon S3 y, después, asociarlo a un clúster de Neptune, consulte Requisitos previos: IAM función y acceso a Amazon S3.

    Para obtener más información, consulte Claves de acceso (ID de clave de acceso y clave de acceso secreta).

  • secretKey: [en desuso] en su lugar, se recomienda el parámetro iamRoleArn. Para obtener información acerca de cómo crear un rol con acceso a Amazon S3 y, después, asociarlo a un clúster de Neptune, consulte Requisitos previos: IAM función y acceso a Amazon S3.

    Para obtener más información, consulte Claves de acceso (ID de clave de acceso y clave de acceso secreta).

Consideraciones especiales a la hora de cargar datos openCypher

  • Al cargar openCypher datos en CSV formato, el parámetro de formato debe estar establecido enopencypher.

  • El updateSingleCardinalityProperties parámetro no es compatible con las openCypher cargas porque todas las openCypher propiedades tienen una cardinalidad única. El formato de openCypher carga no admite matrices y, si un valor de ID aparece más de una vez, se trata como un duplicado o un error de inserción (véase más abajo).

  • El cargador Neptune gestiona los duplicados que encuentra en los openCypher datos de la siguiente manera:

    • Si el programa de carga encuentra varias filas con el mismo identificador de nodo, se fusionan según la siguiente regla:

      • Todas las etiquetas de las filas se añaden al nodo.

      • Para cada propiedad, solo se carga uno de los valores de la propiedad. La selección del que se va a cargar es no determinista.

    • Si el programa de carga encuentra varias filas con el mismo identificador de relación, solo se carga una de ellas. La selección del que se va a cargar es no determinista.

    • El programa de carga nunca actualiza los valores de las propiedades de un nodo o relación existente en la base de datos si encuentra datos de carga con el identificador del nodo o la relación existente. Sin embargo, carga etiquetas y propiedades de los nodos que no están presentes en el nodo o la relación existentes.

  • Aunque no es necesario asignar IDs a las relaciones, suele ser una buena idea (consulte el userProvidedEdgeIds parámetro anterior). Sin una relación explícitaIDs, el cargador debe volver a cargar todas las relaciones en caso de que se produzca un error en un archivo de relaciones, en lugar de reanudar la carga desde donde se produjo el error.

    Además, si los datos de carga no contienen una relación explícitaIDs, el cargador no tiene forma de detectar las relaciones duplicadas.

Este es un ejemplo de un comando de openCypher carga:

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 respuesta del programa de carga es la misma que la normal. Por ejemplo:

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

Sintaxis de respuestas del programa de carga de Neptune

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

Una tarea de carga que se inició correctamente devuelve el código 200.

Errores del programa de carga de Neptune

Cuando se produce un error, se devuelve un JSON objeto en BODY la respuesta. El objeto message contiene una descripción del error.

Categorías de errores
  • Error 400— Los errores de sintaxis devuelven un error de solicitud HTTP 400 incorrecto. El mensaje describe el error.

  • Error 500— Una solicitud válida que no se puede procesar devuelve un error HTTP 500 interno del servidor. El mensaje describe el error.

A continuación se muestran los posibles mensajes de error del programa de carga con la descripción correspondiente.

Mensajes de error del programa de carga
  • Couldn't find the AWS credential for iam_role_arn(HTTP400)

    No se encontraron las credenciales. Verifique las credenciales suministradas con la IAM consola o la AWS CLI salida. Asegúrese de haber agregado el IAM rol especificado en iamRoleArn el clúster.

  • S3 bucket not found for source(HTTP400)

    El bucket de S3 no existe. Compruebe el nombre del bucket.

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

    No se encontraron archivos coincidentes en el bucket de S3.

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

    No es posible conectarse a Amazon S3. La región debe coincidir con la región del clúster. Asegúrese de tener un VPC punto final. Para obtener información sobre la creación de un VPC punto final, consulteCreación de un VPC punto de conexión Amazon S3.

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

    El bucket debe estar en la misma AWS región que la instancia de base de datos de Neptune.

  • Unable to perform S3 list operation(HTTP400)

    El IAM usuario o rol proporcionado no tiene List permisos en el depósito o la carpeta. Compruebe la política o la lista de control de acceso (ACL) del bucket.

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

    La carga es una operación de escritura. Pruebe a volver a cargar en el punto de enlace del clúster de lectura/escritura.

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

    Amazon S3 ha devuelto un error desconocido. Póngase en contacto con AWS Support.

  • Invalid S3 access key(HTTP400)

    La clave de acceso no es válida. Compruebe las credenciales proporcionadas.

  • Invalid S3 secret key(HTTP400)

    La clave secreta no es válida. Compruebe las credenciales proporcionadas.

  • Max concurrent load limit breached(HTTP400)

    Si una solicitud de carga se envía sin "queueRequest" : "TRUE" y un trabajo de carga se está ejecutando actualmente, se producirá este error en la solicitud.

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

    Neptune permite poner en cola hasta 64 trabajos de carga a la vez. Si se envía una solicitud de carga adicional a la cola cuando ya contiene 64 trabajos, se producirá un error en la solicitud con este mensaje.

Ejemplos del programa de carga de Neptune

ejemplo Solicitud

La siguiente es una solicitud enviada HTTP POST mediante el curl comando. Carga un archivo en formato NeptuneCSV. Para obtener más información, consulte Formato de datos de carga de 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" }'
ejemplo Respuesta
{ "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }