Neptune 로더 명령 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Neptune 로더 명령

Amazon S3 버킷의 데이터를 Neptune DB 인스턴스로 로드합니다.

데이터를 로드하려면 엔드포인트에 HTTP POST 요청을 보내야 합니다. https://your-neptune-endpoint:port/loader loader요청의 파라미터는 POST 본문에 전송하거나 URL -encoded 파라미터로 전송할 수 있습니다.

중요

MIME유형은 다음과 같아야 합니다. application/json

S3 버킷은 클러스터와 동일한 AWS 지역에 있어야 합니다.

참고

Amazon S3 SSE-S3 모드로 암호화한 데이터를 Amazon S3에서 로드할 수 있습니다. 이 경우, Neptune은 사용자의 보안 인증 정보를 모방하여 사용자 대신 s3:getObject 호출을 발행할 수 있습니다.

IAM역할에 필요한 액세스 권한이 포함되어 있으면 SSE-KMS 모드를 사용하여 암호화된 Amazon S3에서 암호화된 데이터를 로드할 수도 AWS KMS있습니다. 적절한 AWS KMS 권한이 없으면 대량 로드 작업이 실패하고 LOAD_FAILED 응답이 반환됩니다.

Neptune은 현재 SSE-C 모드로 암호화된 Amazon S3 데이터의 로딩을 지원하지 않습니다.

다른 로드 작업을 시작하기 전에 하나의 로드 작업이 완료될 때까지 기다릴 필요가 없습니다. Neptune은 queueRequest 파라미터가 모두 "TRUE"로 설정된 경우 한 번에 최대 64개의 작업 요청을 대기열에 넣을 수 있습니다. 작업의 대기열 순서는 first-in-first-out (FIFO) 입니다. 반면에 로드 작업을 대기열에 넣지 않으려면 queueRequest 파라미터를 "FALSE"(기본값)로 설정하여 다른 작업이 이미 진행 중일 경우 로드 작업이 실패하게 할 수 있습니다.

dependencies 파라미터를 사용하여 대기열의 지정된 이전 작업이 성공적으로 완료된 후에만 실행되어야 하는 작업을 대기열에 넣을 수 있습니다. 이렇게 하고 나서 지정된 작업이 실패하면 작업이 실행되지 않고 상태가 LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED로 설정됩니다.

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"] }

Neptune 로더 요청 파라미터

  • source— 아마존 S3URI.

    SOURCE파라미터는 단일 파일, 여러 파일, 폴더 또는 여러 폴더를 URI 식별하는 Amazon S3를 수락합니다. Neptune은 지정된 폴더의 모든 데이터 파일을 로드합니다.

    는 다음 형식 중 하나일 URI 수 있습니다.

    • 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

    object-key-name URI 요소는 Amazon S3 ListObjectsAPI호출의 접두사 파라미터와 동일합니다. 지정된 Amazon S3 버킷에서 이름이 해당 접두사로 시작하는 모든 객체를 식별합니다. 단일 파일 또는 폴더 또는 여러 파일 및/또는 폴더일 수 있습니다.

    지정된 폴더에는 여러 버텍스 파일 및 여러 엣지 파일이 포함될 수 있습니다.

    Amazon S3 버킷에 다음과 같은 폴더 구조와 파일이 있는 경우를 예로 들어 보겠습니다bucket-name.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade s3://bucket-name/bcd

    소스 파라미터가 로 s3://bucket-name/a 지정되면 처음 세 개의 파일이 로드됩니다.

    s3://bucket-name/a/bc s3://bucket-name/ab/c s3://bucket-name/ade
  • format   –   데이터의 형식입니다. Neptune Loader 명령의 데이터 형식에 대한 자세한 내용은 Amazon Neptune 대량 로더를 사용하여 데이터 수집 섹션을 참조하세요.

    허용된 값
  • iamRoleArn— Neptune DB 인스턴스가 S3 버킷에 액세스하기 위해 위임할 IAM 역할에 대한 Amazon 리소스 이름 (ARN). Amazon S3에 대한 액세스 권한이 있는 역할을 생성하고 이를 Neptune 클러스터와 연결하는 방법은 사전 요구 사항: IAM 역할 및 Amazon S3 액세스 섹션을 참조하세요.

    엔진 릴리스 1.2.1.0.R3부터 Neptune DB 인스턴스와 Amazon S3 버킷이 서로 다른 계정에 있는 IAM 경우 여러 역할을 연결할 수도 있습니다. AWS 이 경우에는 에 설명된 대로 쉼표로 구분된 역할 목록이 iamRoleArn 포함됩니다. ARNs Amazon IAM Neptune에서의 체인 역할 예:

    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" }'
  • regionregion 파라미터는 클러스터의 AWS 지역 및 S3 버킷과 일치해야 합니다.

    이제 다음 리전에서 Amazon Neptune을 사용할 수 있습니다.

    • 미국 동부(버지니아 북부):   us-east-1

    • 미국 동부(오하이오):   us-east-2

    • 미국 서부(캘리포니아 북부):   us-west-1

    • 미국 서부(오레곤):   us-west-2

    • 캐나다(중부):   ca-central-1

    • 남아메리카(상파울루):   sa-east-1

    • 유럽(스톡홀름):   eu-north-1

    • 유럽(아일랜드):   eu-west-1

    • 유럽(런던):   eu-west-2

    • 유럽(파리):   eu-west-3

    • 유럽(프랑크푸르트):   eu-central-1

    • 중동(바레인):   me-south-1

    • 중동 (UAE): me-central-1

    • 이스라엘(텔아비브):   il-central-1

    • 아프리카(케이프타운):   af-south-1

    • 아시아 태평양(홍콩):   ap-east-1

    • 아시아 태평양(도쿄):   ap-northeast-1

    • 아시아 태평양(서울):   ap-northeast-2

    • 아시아 태평양 (오사카): ap-northeast-3

    • 아시아 태평양(싱가포르):   ap-southeast-1

    • 아시아 태평양(시드니):   ap-southeast-2

    • 아시아 태평양(뭄바이):   ap-south-1

    • 중국(베이징):   cn-north-1

    • 중국(닝샤):   cn-northwest-1

    • AWS GovCloud (미국 서부): us-gov-west-1

    • AWS GovCloud (미국 동부): us-gov-east-1

  • mode   –   로드 작업 모드입니다.

    허용된 값: RESUME, NEW, AUTO

    기본값: AUTO

    • RESUME— RESUME 모드에서 로더는 이 소스에서 이전 로드를 찾고, 찾은 경우 해당 로드 작업을 재개합니다. 이전 로드 작업을 찾지 못하면 로더가 중지됩니다.

      로더는 이전 작업에서 성공적으로 로드된 파일을 다시 로드하지 않고 실패한 파일을 처리하는 작업만 시도합니다. 이전에 로드된 데이터를 Neptune 클러스터에서 삭제한 경우 해당 데이터는 이 모드에서 다시 로드되지 않습니다. 이전 로드 작업이 동일한 소스에서 모든 파일을 성공적으로 로드하면 아무것도 다시 로드되지 않고 로더가 성공을 반환합니다.

    • NEW— NEW 모드에서는 이전 로드에 관계없이 새 로드 요청을 생성합니다. 이 모드는 이전에 로드한 데이터를 Neptune 클러스터에서 삭제한 후 소스에서 모든 데이터를 다시 로드하거나 동일 소스에서 사용 가능한 새 데이터를 로드할 때 사용할 수 있습니다.

    • AUTO— AUTO 모드에서 로더는 모드에서와 마찬가지로 동일한 소스에서 이전 로드 작업을 찾고, 하나를 찾으면 해당 작업을 재개합니다. RESUME

      로더가 동일한 소스에서 이전 로드 작업을 찾지 못하면 NEW 모드에서와 마찬가지로 소스에서 모든 데이터를 로드합니다.

  • failOnError   –   오류 발생 시 완전 정지로 전환하는 플래그입니다.

    허용된 값: "TRUE", "FALSE"

    기본값: "TRUE"

    이 파라미터를 "FALSE"로 설정하면 로더는 모든 데이터를 지정된 위치에 있는 로드하려고 하며 오류가 있는 항목을 건너뜁니다.

    이 파라미터를 "TRUE"로 설정하면 오류가 발생하는 즉시 로더가 중지됩니다. 해당 시점까지 로드된 데이터는 지속됩니다.

  • parallelism   –   대량 로드 프로세스에서 사용하는 스레드 수를 줄이도록 설정할 수 있는 선택적 파라미터입니다.

    허용된 값:

    • LOW— 사용된 스레드 수는 사용 가능한 스레드 수를 8로 vCPUs 나눈 값입니다.

    • MEDIUM— 사용된 스레드 수는 사용 가능한 스레드 수를 2로 vCPUs 나눈 값입니다.

    • HIGH— 사용된 스레드 수는 사용 가능한 스레드 수와 동일합니다vCPUs.

    • OVERSUBSCRIBE— 사용된 스레드 수는 사용 가능한 스레드 수에 2를 vCPUs 곱한 값입니다. 이 값을 사용하면 대량 로더가 사용 가능한 모든 리소스를 차지합니다.

      하지만 그렇다고 해서 OVERSUBSCRIBE 설정의 CPU 사용률이 100% 인 것은 아닙니다. 로드 작업은 I/O 바운드이므로 예상할 수 있는 최대 CPU 사용률은 60~ 70% 범위입니다.

    기본값: HIGH

    parallelism 설정으로 인해 openCypher 데이터를 로드할 때 스레드 간에 교착 상태가 발생할 수 있습니다. 이 경우 Neptune에서 LOAD_DATA_DEADLOCK 오류를 반환합니다. 일반적으로 parallelism을 더 낮게 설정하고 load 명령을 다시 시도하여 문제를 해결할 수 있습니다.

  • parserConfiguration   –   추가 구문 분석 구성 값이 있는 선택적 객체입니다. 각 하위 파라미터는 선택 사항입니다.

    명칭 예제 값 설명
    namedGraphUri http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph 그래프가 지정되지 않은 경우 모든 RDF 형식의 기본 그래프입니다 (쿼드가 아닌 형식과 그래프가 없는 NQUAD 항목의 경우). 기본값은 입니다.http://aws.amazon.com/neptune/vocab/v01/DefaultNamedGraph
    baseUri http://aws.amazon.com/neptune/default RDF/XML및 URI Turtle 형식의 기본 형식. 기본값은 http://aws.amazon.com/neptune/default입니다.
    allowEmptyStrings true

    Gremlin 사용자는 데이터를 로드할 때 빈 문자열 값 (“”) 을 노드 및 에지 속성으로 전달할 수 있어야 합니다. CSV allowEmptyStringsfalse(기본값)로 설정하면 이러한 빈 문자열은 null로 처리되며 로드되지 않습니다.

    allowEmptyStringstrue로 설정하면 로더는 빈 문자열을 유효한 속성값으로 취급하고, 그에 따라 로드합니다.

    자세한 내용은 SPARQL디폴트 그래프와 명명된 그래프 단원을 참조하십시오.

  • updateSingleCardinalityProperties   –   대량 로더가 단일 카디널리티 버텍스 또는 엣지 속성의 새 값을 처리하는 방법을 제어하는 선택적 파라미터입니다. 이는 openCypher 데이터 로드에는 지원되지 않습니다 (참조 openCypher 데이터 로드).

    허용된 값: "TRUE", "FALSE"

    기본값: "FALSE"

    기본적으로, 또는 updateSingleCardinalityProperties가 명시적으로 "FALSE"로 설정되면 로더가 단일 카디널리티를 위반하므로 새 값이 오류로 처리됩니다.

    반면 updateSingleCardinalityProperties"TRUE"로 설정되면 대량 로더가 기존 값을 새 값으로 바꿉니다. 로드되는 소스 파일에 여러 엣지 또는 단일 카디널리티 버텍스 속성 값이 제공되는 경우 대량 로드 끝의 최종 값은 새로운 값 중 하나일 수 있습니다. 로더는 기존 값이 새 값 중 하나로 대체되었음을 보장합니다.

  • queueRequest   –   로드 요청을 대기열에 넣을 수 있는지 여부를 나타내는 선택적 플래그 파라미터입니다.

    Neptune은 queueRequest 파라미터가 모두 "TRUE"로 설정된 경우에 한해 한 번에 최대 64개의 작업 요청을 대기열에 넣을 수 있으므로, 한 로드 작업이 완료될 때까지 기다렸다가 다른 로드 작업을 발행할 필요가 없습니다. 작업의 대기열 순서는 first-in-first-out (FIFO) 입니다.

    queueRequest 파라미터를 생략하거나 "FALSE"로 설정한 경우 다른 로드 작업이 이미 실행 중이면 로드 요청이 실패합니다.

    허용된 값: "TRUE", "FALSE"

    기본값: "FALSE"

  • dependencies   –   대기열에 있는 로드 요청을 대기열에 있는 하나 이상의 이전 작업이 성공적으로 완료되는 것에 의존하게 만들 수 있는 선택적 파라미터입니다.

    Neptune은 queueRequest 파라미터가 "TRUE"로 설정된 경우 한 번에 최대 64개의 로드 요청을 대기열에 넣을 수 있습니다. dependencies 파라미터를 사용하면 대기열에 있는 이러한 요청의 실행이 대기열에 있는 하나 이상의 지정된 이전 요청이 성공적으로 완료되는 것에 의존하게 만들 수 있습니다.

    예를 들어 Job-AJob-B 로드는 서로 독립적이지만 Job-C 로드가 시작되기 전에 Job-AJob-B를 완료해야 하는 경우 다음과 같이 진행합니다.

    1. 어떤 순서든지 차례로 load-job-Bload-job-A를 제출하고 로드 ID를 저장하십시오.

    2. 해당 dependencies 필드에 있는 두 작업의 load-id와 함께 load-job-C를 제출하십시오.

    "dependencies" : ["job_A_load_id", "job_B_load_id"]

    dependencies 파라미터로 인해 대량 로더는 Job-AJob-B가 성공적으로 완료될 때까지 Job-C를 시작하지 않습니다. 둘 중 하나가 실패하면 Job-C가 실행되지 않고 상태가 LOAD_FAILED_BECAUSE_DEPENDENCY_NOT_SATISFIED로 설정됩니다.

    이 방법으로 여러 수준의 종속성을 설정할 수 있으므로 한 작업의 실패로 인해 작업에 직접 또는 간접적으로 종속된 모든 요청이 취소됩니다.

  • userProvidedEdgeIds— 이 매개 변수는 관계가 포함된 openCypher 데이터를 로드할 때만 필요합니다IDs. 로드 데이터에 openCypher 관계가 명시적으로 제공될 True 때 IDs 이 매개변수를 포함하고 설정해야 합니다 (권장).

    userProvidedEdgeIds가 없거나 True로 설정된 경우 로드 중인 모든 관계 파일에 :ID 열이 있어야 합니다.

    userProvidedEdgeIds가 존재하고 False로 설정된 경우 로드 중인 관계 파일은 :ID 열을 포함하지 않아야 합니다. 대신 Neptune 로더는 각 관계에 대한 ID를 자동으로 생성합니다.

    이미 로드된 관계를 다시 로드하지 않고도 CSV 데이터 오류가 수정된 후 로더가 로드를 재개할 수 있도록 관계를 IDs 명시적으로 제공하는 것이 좋습니다. 관계가 명시적으로 할당되지 않은 경우 관계 파일을 IDs 수정해야 하는 경우 로더는 실패한 로드를 재개할 수 없으며 대신 모든 관계를 다시 로드해야 합니다.

  • accessKey[지원 중단됨] S3 버킷 및 데이터 파일에 대한 액세스 권한이 있는 IAM 역할의 액세스 키 ID.

    대신 iamRoleArn 파라미터를 사용하는 것이 좋습니다. Amazon S3에 대한 액세스 권한이 있는 역할을 생성하고 이를 Neptune 클러스터와 연결하는 방법은 사전 요구 사항: IAM 역할 및 Amazon S3 액세스 섹션을 참조하세요.

    자세한 내용은 액세스 키(액세스 키 ID 및 보안 액세스 키)를 참조하십시오.

  • secretKey   –   [사용되지 않음] 대신 iamRoleArn 파라미터를 사용하는 것이 좋습니다. Amazon S3에 대한 액세스 권한이 있는 역할을 생성하고 이를 Neptune 클러스터와 연결하는 방법은 사전 요구 사항: IAM 역할 및 Amazon S3 액세스 섹션을 참조하세요.

    자세한 내용은 액세스 키(액세스 키 ID 및 보안 액세스 키)를 참조하십시오.

데이터 로드에 대한 특별 고려 사항 openCypher

  • openCypher 데이터를 형식으로 로드할 때는 CSV format 매개 변수를 로 설정해야 합니다opencypher.

  • 모든 openCypher 속성에 단일 카디널리티가 있기 때문에 이 updateSingleCardinalityProperties 매개 변수는 openCypher 로드에는 지원되지 않습니다. openCypher 로드 형식은 배열을 지원하지 않으며 ID 값이 두 번 이상 나타나는 경우 중복 또는 삽입 오류로 처리됩니다 (아래 참조).

  • Neptune 로더는 데이터에서 발견된 중복 데이터를 다음과 같이 처리합니다. openCypher

    • 로더가 동일한 노드 ID를 가진 여러 행을 발견하면 다음 규칙에 따라 병합됩니다.

      • 행의 모든 레이블이 노드에 추가됩니다.

      • 각 속성에 대해 속성값 중 하나만 로드됩니다. 로드할 항목 선택은 결정적이지 않습니다.

    • 로더가 동일한 관계 ID를 가진 여러 행을 발견하면 그중 하나만 로드됩니다. 로드할 항목 선택은 결정적이지 않습니다.

    • 기존 노드나 관계의 ID를 가진 로드 데이터가 발견되면 로더는 데이터베이스의 기존 노드 또는 관계의 속성값을 업데이트하지 않습니다. 하지만 기존 노드나 관계에 없는 노드 레이블과 속성은 로드합니다.

  • 관계에 할당할 필요는 없지만 일반적으로 이 IDs 방법을 사용하는 것이 좋습니다 (위 매개변수 참조). userProvidedEdgeIds 명시적 관계가 IDs 없으면 관계 파일에 오류가 발생할 경우 로더가 실패한 위치에서 로드를 재개하는 대신 모든 관계를 다시 로드해야 합니다.

    또한 로드 데이터에 명시적 관계가 없는 경우 로더는 중복 관계를 IDs 탐지할 방법이 없습니다.

다음은 openCypher load 명령의 예시입니다.

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", }'

로더 응답은 일반 응답과 동일합니다. 예:

{ "status" : "200 OK", "payload" : { "loadId" : "guid_as_string" } }

Neptune 로더 응답 구문

{ "status" : "200 OK", "payload" : { "loadId" : "guid_as_string" } }
200 OK

성공적으로 시작된 로드 작업은 200 코드를 반환합니다.

Neptune 로더 오류

오류가 발생하면 BODY 응답의 에서 JSON 객체가 반환됩니다. message 객체에는 오류 설명이 포함됩니다.

오류 범주
  • Error 400— 구문 오류가 있으면 HTTP 400 잘못된 요청 오류가 반환됩니다. 메시지에서 오류를 설명합니다.

  • Error 500— 처리할 수 없는 유효한 요청은 HTTP 500 내부 서버 오류를 반환합니다. 메시지에서 오류를 설명합니다.

다음은 오류 설명이 있는 로더의 가능한 오류 메시지입니다.

로더 오류 메시지
  • Couldn't find the AWS credential for iam_role_arn(HTTP400)

    자격 증명을 찾을 수 없습니다. 제공된 자격 증명을 IAM 콘솔 또는 AWS CLI 출력과 비교하여 확인하십시오. 에 지정된 IAM 역할을 iamRoleArn 클러스터에 추가했는지 확인하십시오.

  • S3 bucket not found for source(HTTP400)

    S3 버킷이 존재하지 않습니다. 버킷 이름을 확인하십시오.

  • The source source-uri does not exist/not reachable(HTTP400)

    S3 버킷에 일치하는 파일이 없습니다.

  • Unable to connect to S3 endpoint. Provided source = source-uri and region = aws-region(HTTP500)

    Amazon S3에 연결할 수 없습니다. 리전은 클러스터 리전과 일치해야 합니다. VPC엔드포인트가 있는지 확인하세요. VPC엔드포인트 생성에 대한 자세한 내용은 을 참조하십시오Amazon S3 VPC 엔드포인트 생성.

  • Bucket is not in provided Region (aws-region)(HTTP400)

    버킷은 Neptune DB AWS 인스턴스와 동일한 지역에 있어야 합니다.

  • Unable to perform S3 list operation(400) HTTP

    제공된 IAM 사용자 또는 역할에는 버킷 또는 폴더에 대한 List 권한이 없습니다. 버킷의 정책 또는 액세스 제어 목록 (ACL) 을 확인하십시오.

  • Start new load operation not permitted on a read replica instance(HTTP405)

    로드는 쓰기 작업입니다. 읽기/쓰기 클러스터 엔드포인트의 로드를 다시 시도하십시오.

  • Failed to start load because of unknown error from S3(HTTP500)

    Amazon S3에서 알 수 없는 오류를 반환했습니다. AWS Support에 문의하십시오.

  • Invalid S3 access key(HTTP400)

    액세스 키가 잘못되었습니다. 제공된 자격 증명을 확인하십시오.

  • Invalid S3 secret key(HTTP400)

    비밀 키가 잘못되었습니다. 제공된 자격 증명을 확인하십시오.

  • Max concurrent load limit breached(HTTP400)

    "queueRequest" : "TRUE" 없이 로드 요청이 제출되고 로드 작업이 현재 실행 중인 경우 요청이 실패하면서 이 오류가 표시됩니다.

  • Failed to start new load for the source "source name". Max load task queue size limit breached. Limit is 64(HTTP400)

    Neptune에서는 한 번에 최대 64개의 로더 작업을 대기열에 넣을 수 있도록 지원합니다. 이미 64개의 작업이 포함되어 있을 때 추가 로드 요청이 대기열에 제출되면 요청이 실패하면서 이 메시지가 표시됩니다.

Neptune 로더 예제

예 요청

다음은 curl 명령을 HTTP POST 사용하여 전송된 요청입니다. CSVNeptune 형식으로 파일을 로드합니다. 자세한 내용은 Gremlin 로드 데이터 형식 단원을 참조하십시오.

curl -X POST \ -H 'Content-Type: application/json' \ https://your-neptune-endpoint:port/loader -d ' { "source" : "s3://bucket-name/object-key-name", "format" : "csv", "iamRoleArn" : "ARN for the IAM role you are using", "region" : "region", "failOnError" : "FALSE", "parallelism" : "MEDIUM", "updateSingleCardinalityProperties" : "FALSE", "queueRequest" : "FALSE" }'
예 응답
{ "status" : "200 OK", "payload" : { "loadId" : "ef478d76-d9da-4d94-8ff1-08d9d4863aa5" } }