Comando do carregador do Neptune - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Comando do carregador do Neptune

Carrega dados de um bucket do Amazon S3 em uma instância de banco de dados do Neptune.

Para carregar dados, você deve enviar uma HTTP POST solicitação ao https://your-neptune-endpoint:port/loader endpoint. Os parâmetros da loader solicitação podem ser enviados no POST corpo ou como parâmetros URL codificados.

Importante

O MIME tipo deve serapplication/json.

O bucket do S3 deve estar na mesma AWS região do cluster.

nota

Você poderá carregar dados criptografados do Amazon S3 se ele foi criptografado usando o modo SSE-S3 do Amazon S3. Nesse caso, o Neptune pode personificar suas credenciais e emitir chamadas s3:getObject em seu nome.

Você também pode carregar dados criptografados do Amazon S3 que foram criptografados usando o SSE-KMS modo, desde que sua IAM função inclua as permissões necessárias para acessar. AWS KMS Sem AWS KMS as permissões adequadas, a operação de carregamento em massa falha e retorna uma LOAD_FAILED resposta.

No momento, o Neptune não é compatível com o carregamento de dados criptografados do Amazon S3 usando o modo SSE-C.

Não é necessário aguardar a conclusão de um trabalho de carregamento antes de iniciar outro. O Neptune poderá colocar na fila até 64 solicitações de trabalho por vez, desde que os parâmetros queueRequest estiverem definidos como "TRUE". A ordem da fila dos trabalhos será first-in-first-out (FIFO). Por outro lado, se não quiser que um trabalho de carga seja colocado na fila, é possível definir o parâmetro queueRequest como "FALSE" (padrão), para que o trabalho de carga falhe se outro já estiver em andamento.

É possível usar o parâmetro dependencies para enfileirar um trabalho que deve ser executado somente após os trabalhos anteriores especificados na fila terem sido concluídos com êxito. Se fizer isso e qualquer um desses trabalhos especificados falharem, o trabalho não será executado e o status será definido como LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

Sintaxe da solicitação do carregador do 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 solicitação do carregador do Neptune

  • source— Um Amazon S3URI.

    O SOURCE parâmetro aceita um Amazon S3 URI que identifica um único arquivo, vários arquivos, uma pasta ou várias pastas. O Neptune carrega todos os arquivos de dados em qualquer pasta especificada.

    Eles URI podem estar em qualquer um dos formatos a seguir.

    • 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

    O object-key-name elemento do URI é equivalente ao parâmetro de prefixo em uma chamada do Amazon ListObjectsAPIS3. Ele identifica todos os objetos no bucket do Amazon S3 especificado cujos nomes começam com esse prefixo. Pode ser um único arquivo ou pasta, ou vários arquivos e/ou pastas.

    A pasta ou as pastas especificadas podem conter vários arquivos de vértice e vários arquivos de borda.

    Por exemplo, se você tivesse a seguinte estrutura de pastas e arquivos em um bucket do Amazon S3 chamado: bucket-name

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

    Se o parâmetro de origem for especificado comos3://bucket-name/a, os três primeiros arquivos serão carregados.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
  • format: o formato dos dados. Para obter mais informações sobre os formatos de dados para o comando Loader do Neptune, consulte Usar o carregador em massa do Amazon Neptune para ingerir dados.

    Valores permitidos
  • iamRoleArn— O Amazon Resource Name (ARN) de uma IAM função a ser assumida pela instância de banco de dados Neptune para acesso ao bucket do S3. Para obter informações sobre como criar um perfil que tenha acesso ao Amazon S3 e associá-lo a um cluster do Neptune, consulte Pré-requisitos: IAM função e acesso ao Amazon S3.

    A partir da versão 1.2.1.0.R3 do motor, você também pode encadear várias funções IAM se a instância de banco de dados Neptune e o bucket do Amazon S3 estiverem localizados em contas diferentes. AWS Nesse caso, iamRoleArn contém uma lista de funções separada por vírgulasARNs, conforme descrito em. Encadeamento de IAM funções no Amazon Neptune Por exemplo:

    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— O region parâmetro deve corresponder à AWS região do cluster e ao bucket do S3.

    O Amazon Neptune está disponível nas seguintes regiões da :

    • Leste dos EUA (Norte da Virgínia): us-east-1

    • Leste dos EUA (Ohio): us-east-2

    • Oeste dos EUA (N. da Califórnia): us-west-1

    • Oeste dos EUA (Oregon): us-west-2

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

    • América do Sul (São Paulo): sa-east-1

    • Europa (Estocolmo): eu-north-1

    • Europa (Irlanda): eu-west-1

    • Europa (Londres): eu-west-2

    • Europa (Paris): eu-west-3

    • Europa (Frankfurt): eu-central-1

    • Oriente Médio (Bahrein): me-south-1

    • Oriente Médio (UAE): me-central-1

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

    • África (Cidade do Cabo): af-south-1

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

    • Ásia-Pacífico (Tóquio): ap-northeast-1

    • Ásia-Pacífico (Seul): ap-northeast-2

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

    • Ásia-Pacífico (Singapura): ap-southeast-1

    • Ásia-Pacífico (Sydney): ap-southeast-2

    • Ásia-Pacífico (Mumbai): ap-south-1

    • China (Pequim): cn-north-1

    • China (Ningxia): cn-northwest-1

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

    • AWS GovCloud (Leste dos EUA): us-gov-east-1

  • mode: o modo do trabalho de carga.

    Valores permitidos: RESUME, NEW, AUTO.

    Valor padrão: AUTO

    • RESUME— No RESUME modo, o carregador procura uma carga anterior dessa fonte e, se encontrar uma, retoma a tarefa de carregamento. Se nenhum trabalho de carga anterior for encontrado, o carregador será interrompido.

      O carregador evita recarregar arquivos que foram carregados com êxito em um trabalho anterior. Ele só tenta processar arquivos com falha. Se você descartou anteriormente dados carregados do cluster do Neptune, esses dados não serão recarregados nesse modo. Se um trabalho de carga anterior carregou todos os arquivos da mesma origem com êxito, nada será recarregado, e o recarregador exibirá êxito.

    • NEW— No NEW modo, cria uma nova solicitação de carregamento, independentemente de quaisquer cargas anteriores. É possível usar esse modo para recarregar todos dados de uma origem depois de eliminar dados carregados anteriormente do cluster do Neptune ou de carregar novos dados disponíveis na mesma origem.

    • AUTO— No AUTO modo, o carregador procura um trabalho de carregamento anterior da mesma fonte e, se encontrar um, retoma esse trabalho, assim como no RESUME modo.

      Se o carregador não encontrar um trabalho de carga anterior da mesma origem, ele carregará todos os dados da origem, assim como no modo NEW.

  • failOnError: sinalizador para alternar uma interrupção completa em um erro.

    Valores permitidos: "TRUE", "FALSE"

    Valor padrão: "TRUE".

    Quando este parâmetro estiver configurado como "FALSE", o carregador tentará carregar todos os dados no local especificado, ignorando as entradas com erros.

    Quando este parâmetro for definido como "TRUE", o carregador será interrompido assim que encontrar um erro. Os dados carregados até esse momento serão mantidos.

  • parallelism: é um parâmetro opcional que pode ser definido para reduzir o número de threads usados pelo processo de carregamento em massa.

    Valores permitidos:

    • LOW— O número de segmentos usados é o número de segmentos disponíveis vCPUs dividido por 8.

    • MEDIUM— O número de segmentos usados é o número de segmentos disponíveis vCPUs dividido por 2.

    • HIGH— O número de segmentos usados é igual ao número de segmentos disponíveisvCPUs.

    • OVERSUBSCRIBE— O número de segmentos usados é o número de segmentos disponíveis vCPUs multiplicado por 2. Se esse valor for usado, o carregador em massa usará todos os recursos disponíveis.

      No entanto, isso não significa que a OVERSUBSCRIBE configuração resulte em 100% de CPU utilização. Como a operação de carga está limitada à E/S, a maior CPU utilização esperada está na faixa de 60% a 70%.

    Valor padrão: HIGH

    Às vezes, a parallelism configuração pode resultar em um impasse entre os encadeamentos ao carregar openCypher dados. Quando isso acontece, o Neptune gera o erro LOAD_DATA_DEADLOCK. Geralmente, é possível corrigir o problema definindo uma configuração parallelism mais baixa e tentando novamente o comando de carregamento.

  • parserConfiguration: um objeto opcional com valores de configuração de analisador adicional. Os parâmetros filho também são opcionais:

    Nome Valor de exemplo Descrição
    namedGraphUri http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph O gráfico padrão para todos os RDF formatos quando nenhum gráfico é especificado (para formatos não quádruplos e NQUAD entradas sem gráfico). O padrão é http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
    baseUri http://aws.amazon.com/neptune/default A base URI para os formatosRDF/XMLe Turtle. O padrão é http://aws.amazon.com/neptune/default.
    allowEmptyStrings true

    Os usuários do Gremlin precisam ser capazes de passar valores de string vazios (“”) como propriedades de nós e bordas ao carregar CSV dados. Se allowEmptyStrings estiver definido como false (o padrão), essas strings vazias serão tratadas como nulas e não serão carregadas.

    Se allowEmptyStrings estiver definido como true, o carregador tratará strings vazias como valores de propriedade válidos e as carregará adequadamente.

    Para obter mais informações, consulte SPARQLGráfico padrão e gráficos nomeados.

  • updateSingleCardinalityProperties: é um parâmetro opcional que controla como o carregador em massa trata um novo valor das propriedades de vértice de cardinalidade única ou de borda. Isso não é compatível com o carregamento openCypher de dados (consulteCarregando openCypher dados).

    Valores permitidos: "TRUE", "FALSE"

    Valor padrão: "FALSE".

    Por padrão, ou quando updateSingleCardinalityProperties está explicitamente definido como "FALSE", o carregador trata um novo valor como um erro, porque ele viola a cardinalidade única.

    Quando updateSingleCardinalityProperties está definido como "TRUE", por outro lado, o carregador em massa substitui o valor existente pelo novo. Se vários valores de propriedade de vértice de cardinalidade única ou de ponto forem fornecidos nos arquivos de origem que estão sendo carregados, o valor final quando o carregamento em massa terminar poderá ser qualquer um desses novos valores. O carregador só garante que o valor existente tenha sido substituído por um dos novos.

  • queueRequest: é um parâmetro de sinalizador opcional que indica se a solicitação de carga pode ser colocada na fila ou não.

    Não é necessário esperar um trabalho de carga ser concluído antes de emitir o próximo, porque o Neptune pode colocar na fila até 64 trabalhos por vez, desde que os parâmetros queueRequest estejam todos definidos como "TRUE". A ordem da fila dos trabalhos será first-in-first-out (FIFO).

    Se o parâmetro queueRequest for omitido ou definido como "FALSE", a solicitação de carga falhará se outro trabalho de carga já estiver em execução.

    Valores permitidos: "TRUE", "FALSE"

    Valor padrão: "FALSE".

  • dependencies: é um parâmetro opcional que pode tornar uma solicitação de carga na fila dependente da conclusão com êxito de um ou mais trabalhos anteriores na fila.

    O Neptune poderá colocar na fila até 64 solicitações de carga por vez se os parâmetros queueRequest estiverem definidos como "TRUE". O parâmetro dependencies permite executar a solicitação enfileirada dependente da conclusão com êxito de uma ou mais solicitações anteriores especificadas na fila.

    Por exemplo, se as cargas Job-A e Job-B forem interdependentes, mas a carga Job-C precisar que a Job-A e a Job-B sejam concluídas antes de começar, prossiga da seguinte forma:

    1. Envie load-job-A e load-job-B, uma após a outra, em qualquer ordem e salve os load-ids.

    2. Envie load-job-C com os load-ids dos dois trabalhos no campo dependencies:

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

    Devido ao parâmetro dependencies, o carregador em massa não iniciará a Job-C até que a Job-A e a Job-B tenham sido concluídas com êxito. Se uma delas falhar, a Job-C não será executada e o status será definido como LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED.

    É possível configurar vários níveis de dependência desta forma, para que a falha de um trabalho faça com que todas as solicitações direta ou indiretamente dependentes sejam canceladas.

  • userProvidedEdgeIds— Esse parâmetro é necessário somente ao carregar openCypher dados que contêm relacionamentoIDs. Ele deve ser incluído e definido para True quando IDs os openCypher relacionamentos são fornecidos explicitamente nos dados de carregamento (recomendado).

    Quando userProvidedEdgeIds está ausente ou definido como True, uma coluna :ID deve estar presente em cada arquivo de relacionamento no carregamento.

    Quando userProvidedEdgeIds está presente e definido como False, os arquivos de relacionamento no carregamento não devem conter uma coluna :ID. Em vez disso, o carregador do Neptune gera automaticamente um ID para cada relacionamento.

    É útil fornecer uma relação IDs explícita para que o carregador possa retomar o carregamento após a correção do erro nos CSV dados, sem precisar recarregar nenhuma relação que já tenha sido carregada. Se o relacionamento não IDs tiver sido atribuído explicitamente, o carregador não poderá retomar um carregamento com falha se algum arquivo de relacionamento precisar ser corrigido e, em vez disso, deverá recarregar todos os relacionamentos.

  • accessKey[obsoleto] Um ID de chave de acesso de uma IAM função com acesso ao bucket do S3 e aos arquivos de dados.

    Em vez disso, o parâmetro iamRoleArn será recomendado. Para obter informações sobre como criar um perfil que tenha acesso ao Amazon S3 e associá-lo a um cluster do Neptune, consulte Pré-requisitos: IAM função e acesso ao Amazon S3.

    Para obter mais informações, consulte Chaves de acesso (ID da chave de acesso e chave de acesso secreta).

  • secretKey: [obsoleto] O parâmetro iamRoleArn será recomendado em vez disso. Para obter informações sobre como criar um perfil que tenha acesso ao Amazon S3 e associá-lo a um cluster do Neptune, consulte Pré-requisitos: IAM função e acesso ao Amazon S3.

    Para obter mais informações, consulte Chaves de acesso (ID da chave de acesso e chave de acesso secreta).

Considerações especiais para carregar dados openCypher

  • Ao carregar openCypher dados em CSV formato, o parâmetro de formato deve ser definido comoopencypher.

  • O updateSingleCardinalityProperties parâmetro não é suportado para openCypher cargas porque todas as openCypher propriedades têm cardinalidade única. O formato de openCypher carregamento não suporta matrizes e, se um valor de ID aparecer mais de uma vez, ele será tratado como uma duplicata ou um erro de inserção (veja abaixo).

  • O carregador Neptune manipula as duplicatas que encontra nos dados da seguinte forma: openCypher

    • Se o carregador encontrar várias linhas com o mesmo ID de nó, elas serão mescladas usando a seguinte regra:

      • Todos os rótulos nas linhas são adicionados ao nó.

      • Para cada propriedade, somente um dos valores é carregado. A seleção do que será carregado não é determinística.

    • Se o carregador encontrar várias linhas com o mesmo ID de relacionamento, somente uma delas será carregada. A seleção de uma para carregamento não é determinística.

    • O carregador nunca atualizará os valores das propriedades de um nó ou relacionamento existente no banco de dados se encontrar dados de carregamento com o ID do nó ou do relacionamento existente. No entanto, ele carrega rótulos e propriedades de nós que não estão presentes no nó ou no relacionamento existente.

  • Embora você não precise atribuir IDs a relacionamentos, geralmente é uma boa ideia (veja o userProvidedEdgeIds parâmetro acima). Sem um relacionamento explícitoIDs, o carregador deve recarregar todos os relacionamentos em caso de erro em um arquivo de relacionamento, em vez de retomar o carregamento de onde ele falhou.

    Além disso, se os dados de carregamento não contiverem uma relação explícitaIDs, o carregador não tem como detectar relações duplicadas.

Aqui está um exemplo de um comando de openCypher carregamento:

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", }'

A resposta do carregador é a mesma de sempre. Por exemplo:

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

Sintaxe da resposta do carregador do Neptune

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

O trabalho de carga iniciado com êxito retorna um código 200.

Erros do carregador do Neptune

Quando ocorre um erro, um JSON objeto é retornado na BODY resposta. O objeto message contém uma descrição do erro.

Categorias de erros
  • Error 400— Erros de sintaxe retornam um erro de solicitação HTTP 400 incorreta. A mensagem descreve o erro.

  • Error 500— Uma solicitação válida que não pode ser processada retorna um erro HTTP 500 interno do servidor. A mensagem descreve o erro.

As seguintes são as mensagens de erro possíveis no carregador com uma descrição do erro.

Mensagens de erro do carregador
  • Couldn't find the AWS credential for iam_role_arn(HTTP400)

    As credenciais não foram encontradas. Verifique as credenciais fornecidas no IAM console ou na AWS CLI saída. Verifique se você adicionou a IAM função especificada no iamRoleArn cluster.

  • S3 bucket not found for source(HTTP400)

    O bucket do S3 não existe. Confirme o nome do bucket.

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

    Nenhum arquivo correspondente foi encontrado no bucket do S3.

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

    Não foi possível se conectar ao Amazon S3. A região deve corresponder à região do cluster. Certifique-se de que você tenha um VPC endpoint. Para obter informações sobre a criação de um VPC endpoint, consulteCriação de um endpoint Amazon S3 VPC.

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

    O bucket deve estar na mesma AWS região da sua instância de banco de dados Neptune.

  • Unable to perform S3 list operation(HTTP400)

    O IAM usuário ou a função fornecida não tem List permissões no bucket ou na pasta. Verifique a política ou a lista de controle de acesso (ACL) no bucket.

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

    O carregamento é uma operação de gravação. Repita a carga no endpoint do cluster de leitura/gravação.

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

    O Amazon S3 gerou um erro desconhecido. Entre em contato com a AWS Support.

  • Invalid S3 access key(HTTP400)

    A chave de acesso é inválida. Verifique as credenciais fornecidas.

  • Invalid S3 secret key(HTTP400)

    A chave secreta é inválida. Verifique as credenciais fornecidas.

  • Max concurrent load limit breached(HTTP400)

    Se uma solicitação de carga for enviada sem "queueRequest" : "TRUE" e um trabalho de carga estiver atualmente em execução, a solicitação falhará com esse erro.

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

    O Neptune é compatível com a colocação de até 64 trabalhos de carregador na fila por vez. Se uma solicitação de carga adicional for enviada para a fila quando esta já contiver 64 trabalhos, a solicitação falhará com essa mensagem.

Exemplos do carregador do Neptune

exemplo Solicitação

A seguir está uma solicitação enviada HTTP POST usando o curl comando. Ele carrega um arquivo no formato CSV Neptune. Para obter mais informações, consulte Formato de dados de carga do 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" }'
exemplo Resposta
{ "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }