Neptune 로더 명령 - Amazon Neptune

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

Neptune 로더 명령

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

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

중요

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개의 작업 요청을 대기열에 넣을 수 있습니다. 작업의 대기열 순서는 (FIFO)입니다 first-in-first-out. 반면에 로드 작업을 대기열에 넣지 않으려면 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 – Amazon S3 URI.

    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 요소는 Amazon S3 ListObjects API 호출의 접두사 파라미터와 URI 동일합니다. 지정된 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처음 3개의 파일이 로드됩니다.

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

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

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

    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" }'
  • region - region 파라미터는 클러스터의 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-south-2

    • 유럽(아일랜드):   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-southeast-3

    • 아시아 태평양(뭄바이):   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 설정이 100% CPU 사용률을 초래한다는 의미는 아닙니다. 로드 작업은 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 및 Turtle 형식URI의 기본입니다. 기본값은 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개의 작업 요청을 대기열에 넣을 수 있으므로, 한 로드 작업이 완료될 때까지 기다렸다가 다른 로드 작업을 발행할 필요가 없습니다. 작업의 대기열 순서는 (FIFO)입니다 first-in-first-out.

    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 관계가 IDs 명시적으로 제공되는 True 경우(권장) 이를 포함하고 로 설정해야 합니다.

    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 데이터 로드에 대한 특별 고려 사항

  • CSV 형식으로 openCypher 데이터를 로드할 때 형식 파라미터를 로 설정해야 합니다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 코드를 반환합니다.