Como resolver erros de processamento no Amazon Neptune Bulk Loader?
Estou tentando usar o Amazon Neptune Bulk Loader para carregar dados de um bucket do Amazon Simple Storage Service (Amazon S3). No entanto, algumas das solicitações falham. Como faço para solucionar isso?
Breve descrição
Para solucionar problemas de solicitações de dados que continuam falhando, verifique o status de cada trabalho. Em seguida, identifique os trabalhos que falharam fazendo o seguinte:
- Use a API Bulk Loader padrão para cada carga individual e verifique o status de cada trabalho.
- Use um script de administração e um script automatizado em um único trabalho. Você pode criar e executar o script automatizado em um sistema Linux ou UNIX.
Observe essas limitações:
- a API Bulk Loader do Neptune não fornece uma exibição instantânea de todas as operações de carregamento.
- Se a autorização do AWS Identity and Access Management (IAM) estiver habilitada no cluster do Neptune, as solicitações para a API Bulk Load deverão ser assinadas.
- A API Bulk Loader armazena em cache as informações somente sobre as últimas 1024 trabalhos de carregamento. Ela armazena somente os detalhes dos últimos 10.000 erros por trabalho.
Resolução
Use a API Bulk Loader padrão
1. Recupere os IDs do carregador:
$ curl -G 'https://neptunedemo-cluster.cluster-cw7ehemc1eeo.us-east-1.neptune.amazonaws.com:8182/loader'|jq { "status": "200 OK", "payload": { "loadIds": [ "c32bbd24-99a7-45ee-972c-21b7b9cab3e2", "6f6342fb-4ea3-452c-ac69-b4d117e37d5a", "647114a6-6ed4-4018-896c-e84a08fcf864", "521d33fa-7050-44d7-a961-b64ef4e2d1db", "d0d4714e-7cf8-415e-89f5-d07ed2732bf2" ] } }
2. Verifique o status de cada trabalho, um por um, para verificar se o trabalho foi bem-sucedido:
curl -G 'https://neptunedemo-cluster.cluster-cw7ehemc1eeo.us-east-1.neptune.amazonaws.com:8182/loader/c32bbd24-99a7-45ee-972c-21b7b9cab3e2?details=true&errors=true&page=1&errorsPerPage=3'|jq { "status": "200 OK", "payload": { "feedCount": [ { "LOAD_COMPLETED": 2 } ], "overallStatus": { "fullUri": "s3://demodata/neptune/", "runNumber": 5, "retryNumber": 0, "status": "LOAD_COMPLETED", "totalTimeSpent": 3, "startTime": 1555574461, "totalRecords": 8, "totalDuplicates": 8, "parsingErrors": 0, "datatypeMismatchErrors": 0, "insertErrors": 0 }, "errors": { "startIndex": 0, "endIndex": 0, "loadId": "c32bbd24-99a7-45ee-972c-21b7b9cab3e2", "errorLogs": [] } } }
Use um script de administração
Você pode usar um script de administração para identificar uma falha na tarefa do Bulk Loader do Neptune em seu processo de produção. O script de administração gera uma saída no seguinte formato para todos os trabalhos de carregamento:
Startime-loadid:status,S3location,Errors
Observação: o script de administração pode ser usado em qualquer sistema Linux que tenha acesso ao cluster do Neptune.
Crie e execute o script automatizado em um sistema Linux ou UNIX
1. Crie o script usando um editor de texto:
$ vi script
2. Certifique-se de substituir cluster-endpoint:Port pelos valores apropriados:
cluster_ep="https://cluster-endpoint:Port/loader" for loadId in $(curl --silent -G "${cluster_ep}?details=true" | jq '.payload.loadIds[]'); do clean_loadId=$(echo -n ${loadId} | tr -d '"') time=$(date -d@$(curl --silent -G "${cluster_ep}/${clean_loadId}?details=true" | jq '.payload.overallStatus.startTime')) echo -n $time '-' echo -n ${clean_loadId}: $(curl --silent -G "${cluster_ep}/${clean_loadId}?details=true" | jq '.payload.overallStatus.status') echo -n ',S3 LOCATION': $(curl --silent -G "${cluster_ep}/${clean_loadId}?details=true" | jq '.payload.overallStatus.fullUri') echo -n ',ERRORS': $(curl --silent -G "${cluster_ep}/${clean_loadId}?details=truei&errors=true&page=1&errorsPerPage=3" | jq '.payload.errors.errorLogs') echo done
3. Salve o script e forneça permissões para que ele seja executado:
chmod +x script
4. Instale a biblioteca dependente:
sudo yum install jq
5. Execute o script:
$ ./script
Este é um exemplo de saída:
Thu Apr 18 08:01:01 UTC 2019 -c32bbd24-99a7-45ee-972c-21b7b9cab3e2: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null Fri Apr 5 07:04:00 UTC 2019 -6f6342fb-4ea3-452c-ac69-b4d117e37d5a: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null Fri Apr 5 07:01:30 UTC 2019 -647114a6-6ed4-4018-896c-e84a08fcf864: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null Tue Mar 19 17:36:02 UTC 2019 -521d33fa-7050-44d7-a961-b64ef4e2d1db: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null Tue Mar 19 17:35:45 UTC 2019 -d0d4714e-7cf8-415e-89f5-d07ed2732bf2: "LOAD_COMPLETED",S3 LOCATION: "s3://demodata/neptune/",ERRORS: null
Informações relacionadas
Exemplo: Carregamento de dados em uma instância de banco de dados do Neptune
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há um ano
- AWS OFICIALAtualizada há 2 anos