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á.
Carrega dados de um bucket do Amazon S3 em uma instância de banco de dados do Neptune.
Para carregar os dados, você deve enviar uma solicitação HTTP POST
ao endpoint https://
. Os parâmetros da solicitação de your-neptune-endpoint
:port
/loaderloader
podem ser enviados no corpo do POST
ou como parâmetros codificados por URL.
Importante
O tipo MIME deve ser application/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 modo SSE-KMS
, desde que o perfil do IAM inclua as permissões necessárias para acessar o 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 URI do Amazon S3.O parâmetro
SOURCE
aceita um URI do Amazon S3 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.O URI pode estar em qualquer um dos seguintes 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
O
object-key-name
elemento do URI é equivalente ao parâmetro de prefixo em uma chamada de API do Amazon ListObjectsS3. 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 como
s3://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 comandoLoader
do Neptune, consulte Usando o carregador em massa Amazon Neptune para ingerir dados.Valores permitidos
csv
para o formato de dados CSV do Gremlin.opencypher
para o formato de dados CSV do openCypher.ntriples
para o formato de dados N-Triples do RDF. nquads
para o formato de dados N-Quads do RDF. rdfxml
para o formato de dados RDF\XML do RDF. turtle
para o formato de dados Turtle do RDF.
-
iamRoleArn
: o nome do recurso da Amazon (ARN) de um perfil do IAM a ser assumido pela instância de banco de dados do 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: perfil do IAM e acesso ao Amazon S3.A partir da versão 1.2.1.0.R3 do mecanismo, você também pode encadear várias funções do 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írgulas ARNs, conforme descrito em. Encadear perfis do IAM 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
— Oregion
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 (Espanha):
eu-south-2
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 (Emirados Árabes Unidos):
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 (Jacarta):
ap-southeast-3
Ásia-Pacífico (Malásia):
ap-southeast-5
Á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 modo RESUME, o carregador procura uma carga anterior dessa origem e, se encontrar, retomará esse trabalho de carga. 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 modo NEW, cria uma solicitação de carga, 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 modo AUTO, o carregador procura um trabalho de carga anterior da mesma origem e, se encontrar, retomará esse trabalho, assim como no modoRESUME
.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 threads usados é o número de v disponíveis CPUs dividido por 8.MEDIUM
— O número de threads usados é o número de v disponíveis CPUs dividido por 2.HIGH
— O número de threads usados é igual ao número de v disponíveisCPUs.-
OVERSUBSCRIBE
— O número de threads usados é o número de v disponíveis CPUs 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 configuração
OVERSUBSCRIBE
resulte em 100% de utilização da CPU. Como a operação de carga está limitada à E/S, a maior utilização esperada da CPU está na faixa de 60% a 70%.
Valor padrão:
HIGH
Às vezes, a configuração
parallelism
pode causar um deadlock entre os threads ao carregar dados do openCypher. Quando isso acontece, o Neptune gera o erroLOAD_DATA_DEADLOCK
. Geralmente, é possível corrigir o problema definindo uma configuraçãoparallelism
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:Name Valor de exemplo Descrição namedGraphUri
http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
O gráfico padrão para todos os formatos RDF quando nenhum gráfico for especificado (para formatos non-quads e entradas NQUAD sem gráfico). O padrão é http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
baseUri
http://aws.amazon.com/neptune/default
O URI base para formatos RDF/XML e Turtle. O padrão é http://aws.amazon.com/neptune/default
.allowEmptyStrings
true
É necessário que os usuários do Gremlin possam transmitir valores de string vazios (“”) como propriedades de nós e bordas ao carregar dados CSV. Se
allowEmptyStrings
estiver definido comofalse
(o padrão), essas strings vazias serão tratadas como nulas e não serão carregadas.Se
allowEmptyStrings
estiver definido comotrue
, o carregador tratará strings vazias como valores de propriedade válidos e as carregará adequadamente.Para obter mais informações, consulte Gráfico padrão e gráficos nomeados do SPARQL.
-
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 de dados do openCypher (consulte Carregar dados do openCypher).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âmetrodependencies
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
eJob-B
forem interdependentes, mas a cargaJob-C
precisar que aJob-A
e aJob-B
sejam concluídas antes de começar, prossiga da seguinte forma:Envie
load-job-A
eload-job-B
, uma após a outra, em qualquer ordem e salve os load-ids.Envie
load-job-C
com os load-ids dos dois trabalhos no campodependencies
:
"dependencies" : ["
job_A_load_id
", "job_B_load_id
"]Devido ao parâmetro
dependencies
, o carregador em massa não iniciará aJob-C
até que aJob-A
e aJob-B
tenham sido concluídas com êxito. Se uma delas falhar, a Job-C não será executada e o status será definido comoLOAD_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 dados do OpenCypher que contêm relacionamento. IDs Ele deve ser incluído e configurado paraTrue
quando os relacionamentos do OpenCypher IDs forem fornecidos explicitamente nos dados de carregamento (recomendado).Quando
userProvidedEdgeIds
está ausente ou definido comoTrue
, uma coluna:ID
deve estar presente em cada arquivo de relacionamento no carregamento.Quando
userProvidedEdgeIds
está presente e definido comoFalse
, 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 dados CSV, 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 um perfil do IAM com acesso ao bucket do S3 e 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: perfil do IAM 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âmetroiamRoleArn
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: perfil do IAM 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 sobre o carregamento de dados do openCypher
Ao carregar dados do openCypher no formato CSV, o parâmetro de formato deverá ser definido como
opencypher
.O parâmetro
updateSingleCardinalityProperties
não é compatível com carregamento do openCypher porque todas as propriedades do openCypher têm cardinalidade única. O formato de carregamento do openCypher não é compatível com matrizes e, se um valor de ID aparecer mais de uma vez, ele será tratado como uma duplicação ou um erro de inserção (veja abaixo).-
O carregador do Neptune trata as duplicações encontradas nos dados do openCypher da seguinte forma:
-
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ícito IDs, 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ícita IDs, o carregador não tem como detectar relações duplicadas.
Veja a seguir o exemplo de um comando de carregamento do 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", }'
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
.