Amazon Neptune Bulk Loader의 처리 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 6일

Amazon Neptune Bulk Loader를 사용하여 Amazon Simple Storage Service(Amazon S3) 버킷에서 데이터를 로드하려고 합니다. 하지만 일부 요청은 실패합니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

계속 실패하는 데이터 요청 문제를 해결하기 위해 각 작업의 상태를 확인할 수 있습니다. 그런 다음 다음을 수행하여 실패한 작업을 식별합니다.

  • 각 개별 로드에 대해 기본 대량 로더 API를 사용하고 각 작업의 상태를 확인합니다.
  • 하나의 작업에서 관리 스크립트 및 자동화된 스크립트를 사용합니다. Linux 또는 UNIX 시스템에서 자동화된 스크립트를 생성하고 실행할 수 있습니다.

다음 제한 사항에 유의하십시오.

  • Neptune Bulk Loader API는 모든 로드 작업의 스냅샷 보기를 제공하지 않습니다.
  • Neptune 클러스터에서 AWS Identity and Access Management(IAM) 권한 부여가 활성화된 경우 대량 로드 API에 대한 요청에 서명해야 합니다.
  • Bulk Loader API는 마지막 1024개 로드 작업에 대한 정보만 캐싱합니다. 작업당 마지막 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에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?