Neptune Bulk Loader의 로드 시간을 줄이려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 10월 9일

Neptune Bulk Loader를 사용하여 Amazon Neptune 클러스터에 데이터를 로드하려고 합니다. 하지만 프로세스에 예상보다 시간이 많이 걸립니다. 로드 시간을 줄이려면 어떻게 해야 합니까?

해결 방법

인스턴스 클래스

대량 로드하기 전에 라이터 인스턴스를 최대 크기로 설정합니다. 라이터 및 리더 각각에 대해 서로 다른 인스턴스 클래스를 유지 관리하여 Neptune 클러스터에서 노드가 하나만 확장되도록 할 수 있습니다. 대량 업로드가 완료되면 라이터 인스턴스를 축소할 수 있습니다.

병렬 처리

쓰기 작업 중에 다른 작업을 수행하지 않는 경우 OVERSUBSCRIBE 병렬 처리 파라미터를 사용합니다. 이 파라미터는 사용 가능한 모든 리소스를 사용하도록 Neptune Bulk Loader를 설정하여 전체 로드 시간을 줄입니다.

파일 크기 및 요청 처리량

Amazon Simple Storage Service(Amazon S3) 버킷에는 더 큰 대량 로드 파일(예: csv 파일)을 사용하는 것이 좋습니다. 이렇게 하면 Bulk Load API가 큰 파일을 분할하고 동시성을 관리할 수 있습니다. 파일이 여러 개인 경우 다음 방법 중 하나를 고려하십시오.

  • S3 소스를 폴더로 설정: Bulk Load API는 자동으로 버텍스 파일을 사용하여 시작한 다음 나중에 엣지 파일을 업로드합니다.
  • Neptune은 파일을 병렬로 로드할 수 있으므로, 파일이 여러 개인 경우 로드 프로세스 속도가 높아질 수 있습니다.
  • 파일 압축: Bulk Load API는 gzip 파일을 지원하므로 S3 버킷에서 큰 파일을 가져오는 데 따른 오버헤드를 줄일 수 있습니다.
  • queueRequestdependencies 요청 파라미터를 사용합니다. queueRequest 파라미터가 “TRUE”로 설정된 경우 Neptune은 여러 작업을 동시에 대기열에 넣습니다. 한 작업이 실패하면 모든 작업이 실패하도록 여러 수준의 종속성을 설정할 수 있습니다. 이 방법으로 종속성을 설정하면 데이터의 불일치를 방지할 수도 있습니다.

예를 들어 Job-A와 Job-B가 서로 독립적인 경우, Job-C가 시작되기 전에 Job-A와 Job-B가 완료되도록 Job-C를 설정합니다. Job-A와 Job-B를 제출(순서는 상관 없음)하고 로드 ID를 저장합니다. 그런 다음 dependencies 필드에 두 작업의 로드 ID와 함께 load-job-C를 제출합니다.

"dependencies" : ["Job_A_loadID", "Job_B_loadID"]

Job-A 또는 Job-B 중 하나가 실패하면 Job-C가 실행되지 않고 그 상태가 LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED로 설정됩니다.

데이터 정리

  • 데이터를 지원되는 로드 데이터 형식으로 변환합니다.
  • updateSingleCardinalityProperties를 사용하여 데이터를 유지 관리합니다. 예를 들어 Person에 대한 버텍스가 있는데 전화번호를 변경하려는 경우 Neptune Bulk Loader는 변경을 거부합니다. 새 값은 오류로 처리됩니다. 하지만 updateSingleCardinalityProperties를 “TRUE”로 설정하면 Neptune Bulk Loader가 해당 버텍스 속성의 값을 바꿉니다.
    중요: CSV 파일의 헤더는 속성의 단일 카디널리티를 나타내야 합니다. updateSingleCardinalityProperties 파라미터의 카디널리티 및 콘텐츠가 “단일” 또는 단일 값이 아니면 파라미터가 작동하지 않습니다. 자세한 내용은 속성 열 헤더에서 열의 카디널리티 지정 섹션을 참조하십시오.
  • 대량 로드가 시작되기 전에 대량 로드 파일에서 중복된 항목 또는 알려진 오류를 제거합니다.
  • 고유 조건자의 수를 줄입니다(예: 엣지 및 버텍스의 속성).

로드 작업 동작

failOnError 파라미터를 사용하여 오류 발생 시 대량 로드 작업을 계속할지 여부를 결정할 수 있습니다. 또는 mode 파라미터를 사용하여 처음에 로드가 실패한 파일에 대해서만 로드 작업이 다시 시작되도록 할 수 있습니다. modefailOnError 파라미터에 대한 자세한 내용은 요청 파라미터를 참조하십시오.

실패한 Bulk Loader 작업 문제 해결

Get-Status API를 사용하여 특정 로드 작업에 대한 세부 정보를 얻을 수 있습니다. 다음 cURL 호출을 사용하여 상태를 확인하고 Neptune Bulk Loader의 오류를 찾습니다.

curl -s "https://neptune:8182/loader/<loaderid>?details=true&errors=true"

Neptune Bulk Loader 문제 해결에 대한 자세한 내용은 Amazon Neptune Bulk Loader의 프로세싱 오류를 해결하려면 어떻게 해야 합니까?를 참조하십시오.


이 문서가 도움이 되었습니까?


결제 또는 기술 지원이 필요합니까?