Amazon Neptune Bulk Loader의 처리 오류를 해결하려면 어떻게 해야 합니까?
3분 분량
0
Amazon Neptune Bulk Loader를 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷에서 데이터를 로드하려고 합니다. 하지만 일부 요청은 실패합니다. 이 문제를 해결하려면 어떻게 해야 합니까?
간략한 설명
계속 실패하는 데이터 요청 문제를 해결하려면 각 작업의 상태를 확인하십시오. 그런 후 다음을 수행하여 실패한 작업을 식별하십시오.
- 각 개별 로드에 대해 기본 대량 로더 API를 사용하고 각 작업의 상태를 확인합니다.
- 하나의 작업에서 관리 스크립트 및 자동화된 스크립트를 사용합니다. Linux 또는 UNIX 시스템에서 자동화된 스크립트를 생성하고 실행할 수 있습니다.
다음 제한 사항에 유의하십시오.
- Neptune Bulk Loader API는 모든 로드 작업의 스냅샷 보기를 제공하지 않습니다.
- Neptune 클러스터에서 AWS Identity and Access Management(IAM) 권한 부여가 활성화된 경우 Bulk Loader API에 대한 요청에 서명해야 합니다.
- Bulk Loader API는 마지막 1,024개 로드 작업에 대한 정보만 캐싱합니다. 작업당 마지막 10,000개의 오류에 대한 오류 세부 정보만 저장합니다.
해결 방법
기본 Bulk Loader API 사용
1. 로더 ID를 검색합니다.
$ 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. 각 작업의 상태를 하나씩 확인하여 작업이 성공했는지 확인합니다.
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": [] } } }
관리자 스크립트 사용
관리자 스크립트를 사용하여 프로덕션 프로세스에서 실패한 Neptune Bulk Loader 작업을 식별할 수 있습니다. 관리자 스크립트는 모든 로드 작업에 대해 다음 형식으로 출력을 생성합니다.
Startime-loadid:status,S3location,Errors
참고: 관리자 스크립트는 Neptune 클러스터에 액세스할 수 있는 모든 Linux 시스템에서 사용할 수 있습니다.
Linux 또는 UNIX 시스템에서 자동화된 스크립트 생성 및 실행
1. 텍스트 편집기를 사용하여 스크립트를 생성합니다.
$ vi script
2. cluster-endpoint: Port를 적절한 값으로 바꿔야 합니다.
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. 스크립트를 저장한 다음, 실행할 스크립트에 대한 사용 권한을 제공합니다.
chmod +x script
4. 종속 라이브러리를 설치합니다.
sudo yum install jq
5. 스크립트를 실행합니다.
$ ./script
다음은 출력 예입니다.
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
관련 정보
AWS 공식업데이트됨 4년 전
댓글 없음
관련 콘텐츠
- 질문됨 일 년 전lg...
- 질문됨 2년 전lg...
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 3년 전