Cloud Storage Avro to Spanner 템플릿

Cloud Storage Avro to Spanner 템플릿은 Cloud Storage에 저장된 Spanner에서 내보낸 Avro 파일을 읽고 Spanner 데이터베이스로 가져오는 일괄 파이프라인입니다.

파이프라인 요구사항

  • 비어 있는 대상 Spanner 데이터베이스가 있어야 합니다.
  • Cloud Storage 버킷에 대한 읽기 권한과 대상 Spanner 데이터베이스에 대한 쓰기 권한이 있어야 합니다.
  • 입력 Cloud Storage 경로가 있어야 하며, 가져올 파일의 JSON 설명이 있는 spanner-export.json 파일이 포함되어야 합니다.
  • 소스 Avro 파일에 기본 키가 포함되어 있지 않으면 템플릿을 실행하기 전에 기본 키를 사용하여 빈 Spanner 테이블을 만들어야 합니다. Avro 파일이 기본 키를 정의하는 경우에는 이 단계가 필요하지 않습니다.

템플릿 매개변수

필수 매개변수

  • instanceId: Spanner 데이터베이스의 인스턴스 ID입니다.
  • databaseId: Spanner 데이터베이스의 데이터베이스 ID입니다.
  • inputDir: Avro 파일을 가져올 Cloud Storage 경로입니다.

선택적 매개변수

  • spannerHost: 템플릿에서 호출할 Cloud Spanner 엔드포인트입니다. 테스트에만 사용됩니다. 예를 들면 https://batch-spanner.googleapis.com입니다. 기본값은 https://batch-spanner.googleapis.com입니다.
  • waitForIndexes: true인 경우 파이프라인은 색인이 생성될 때까지 기다립니다. false인 경우 색인이 백그라운드에서 계속 생성되는 동안에 작업이 완료될 수 있습니다. 기본값은 false입니다.
  • waitForForeignKeys: true인 경우 파이프라인은 외래 키가 생성될 때까지 기다립니다. false인 경우 외래 키가 백그라운드에서 계속 생성되는 동안에 작업이 완료될 수 있습니다. 기본값은 false입니다.
  • waitForChangeStreams: true인 경우 파이프라인은 변경 내역이 생성될 때까지 기다립니다. false인 경우 변경 내역이 백그라운드에서 계속 생성되는 동안에 작업이 완료될 수 있습니다. 기본값은 true입니다.
  • waitForSequences: 기본적으로 가져오기 파이프라인은 시퀀스 생성 시에 차단됩니다. false인 경우, 가져오기 파이프라인이 백그라운드에서 계속 생성되는 시퀀스로 완료될 수 있습니다.
  • earlyIndexCreateFlag: 조기 색인 생성이 사용 설정되어 있는지 지정합니다. 템플릿이 많은 DDL 문을 실행하는 경우 데이터를 로드하기 전에 색인을 만드는 것이 더 효율적입니다. 따라서 기본 동작은 DDL 문 수가 기준점을 초과할 때 먼저 색인을 만드는 것입니다. 이 기능을 사용 중지하려면 earlyIndexCreateFlagfalse로 설정합니다. 기본값은 true입니다.
  • spannerProjectId: Spanner 데이터베이스가 포함된 Google Cloud 프로젝트의 ID입니다. 설정하지 않으면 기본 Google Cloud 프로젝트가 사용됩니다.
  • ddlCreationTimeoutInMinutes: 템플릿에서 실행한 DDL 문의 제한 시간(분)입니다. 기본값은 30분입니다.
  • spannerPriority: Spanner 호출의 요청 우선순위입니다. 가능한 값은 HIGH, MEDIUM, LOW입니다. 기본값은 MEDIUM입니다.

템플릿 실행

콘솔

  1. Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다.
  2. 템플릿에서 작업 만들기로 이동
  3. 작업 이름 필드에 고유한 작업 이름을 입력합니다.

    Google Cloud 콘솔의 Spanner 인스턴스 페이지에 작업이 표시되려면 작업 이름이 다음 형식과 일치해야 합니다.

    cloud-spanner-import-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    다음을 바꿉니다.

    • SPANNER_INSTANCE_ID: Spanner 인스턴스의 ID입니다.
    • SPANNER_DATABASE_NAME: Spanner 데이터베이스의 이름입니다.
  4. (선택사항): 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전은 us-central1입니다.

    Dataflow 작업을 실행할 수 있는 리전 목록은 Dataflow 위치를 참조하세요.

  5. Dataflow 템플릿 드롭다운 메뉴에서 the Avro Files on Cloud Storage to Cloud Spanner template을 선택합니다.
  6. 제공된 매개변수 필드에 매개변수 값을 입력합니다.
  7. 작업 실행을 클릭합니다.

gcloud

셸 또는 터미널에서 템플릿을 실행합니다.

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/GCS_Avro_to_Cloud_Spanner \
    --region REGION_NAME \
    --staging-location GCS_STAGING_LOCATION \
    --parameters \
instanceId=INSTANCE_ID,\
databaseId=DATABASE_ID,\
inputDir=GCS_DIRECTORY

다음을 바꿉니다.

  • JOB_NAME: 선택한 고유한 작업 이름
  • VERSION: 사용할 템플릿 버전

    다음 값을 사용할 수 있습니다.

  • REGION_NAME: Dataflow 작업을 배포할 리전(예: us-central1)
  • INSTANCE_ID: 데이터베이스가 포함된 Spanner 인스턴스의 ID
  • DATABASE_ID: 가져올 Spanner 데이터베이스의 ID
  • GCS_DIRECTORY: Avro 파일을 가져올 Cloud Storage 경로(예시: gs://mybucket/somefolder)

API

REST API를 사용하여 템플릿을 실행하려면 HTTP POST 요청을 전송합니다. API 및 승인 범위에 대한 자세한 내용은 projects.templates.launch를 참조하세요.

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/GCS_Avro_to_Cloud_Spanner
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "inputDir": "gs://GCS_DIRECTORY"
   },
   "environment": {
       "machineType": "n1-standard-2"
   }
}

다음을 바꿉니다.

  • PROJECT_ID: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 ID
  • JOB_NAME: 선택한 고유한 작업 이름
  • VERSION: 사용할 템플릿 버전

    다음 값을 사용할 수 있습니다.

  • LOCATION: Dataflow 작업을 배포할 리전(예: us-central1)
  • INSTANCE_ID: 데이터베이스가 포함된 Spanner 인스턴스의 ID
  • DATABASE_ID: 가져올 Spanner 데이터베이스의 ID
  • GCS_DIRECTORY: Avro 파일을 가져올 Cloud Storage 경로(예시: gs://mybucket/somefolder)

다음 단계