Spanner to Cloud Storage Avro 템플릿

Cloud Storage의 Spanner to Avro Files 템플릿은 전체 Spanner 데이터베이스를 Avro 형식으로 Cloud Storage에 내보내는 일괄 파이프라인입니다. Spanner 데이터베이스를 내보내면 선택한 버킷에 폴더가 생성됩니다. 폴더에는 다음이 포함됩니다.

  • spanner-export.json 파일
  • 내보낸 데이터베이스에서 각 테이블의 TableName-manifest.json 파일입니다.
  • 하나 이상의 TableName.avro-#####-of-##### 파일

예를 들어 SingersAlbums의 두 테이블이 있는 데이터베이스를 내보내는 경우 다음 파일 세트가 생성됩니다.

  • Albums-manifest.json
  • Albums.avro-00000-of-00002
  • Albums.avro-00001-of-00002
  • Singers-manifest.json
  • Singers.avro-00000-of-00003
  • Singers.avro-00001-of-00003
  • Singers.avro-00002-of-00003
  • spanner-export.json

파이프라인 요구사항

  • Spanner 데이터베이스가 있어야 합니다.
  • 출력 Cloud Storage 버킷이 있어야 합니다.
  • Dataflow 작업을 실행하는 데 필요한 Identity and Access Management (IAM) 역할 외에도 Spanner 데이터를 읽고 Cloud Storage 버킷에 쓰기 위한 적절한 IAM 역할이 있어야 합니다.

템플릿 매개변수

필수 매개변수

  • instanceId: 내보낼 Spanner 데이터베이스의 인스턴스 ID입니다.
  • databaseId: 내보낼 Spanner 데이터베이스의 데이터베이스 ID입니다.
  • outputDir: Avro 파일을 내보낼 Cloud Storage 경로입니다. 내보내기 작업을 수행하면 이 경로 아래에 내보낸 파일을 포함하는 새 디렉터리가 생성됩니다. 예를 들면 gs://your-bucket/your-path입니다.

선택적 매개변수

  • avroTempDirectory: 임시 Avro 파일이 작성되는 Cloud Storage 경로입니다.
  • spannerHost: 템플릿에서 호출할 Cloud Spanner 엔드포인트입니다. 테스트에만 사용됩니다. 예를 들면 https://batch-spanner.googleapis.com입니다. 기본값은 https://batch-spanner.googleapis.com입니다.
  • snapshotTime: 읽으려는 Spanner 데이터베이스의 버전에 해당하는 타임스탬프입니다. 타임스탬프는 RFC 3339 UTC Zulu 형식을 사용하여 지정해야 합니다. 타임스탬프는 과거여야 하며 최대 타임스탬프 비활성이 적용됩니다. 예를 들면 1990-12-31T23:59:60Z입니다. 기본값은 빈 값입니다.
  • spannerProjectId: 데이터를 읽을 Spanner 데이터베이스가 포함된 Google Cloud 프로젝트의 ID입니다.
  • shouldExportTimestampAsLogicalType: true인 경우 타임스탬프가 timestamp-micros 논리 유형이 있는 long 유형으로 내보내집니다. 기본적으로 이 매개변수는 false로 설정되며 타임스탬프는 나노초 단위 정밀도로 ISO-8601 문자열로 내보내집니다.
  • tableNames: 내보낼 Spanner 데이터베이스의 하위 집합을 지정하는 쉼표로 구분된 테이블 목록입니다. 이 매개변수를 설정하는 경우 모든 관련 테이블 (상위 테이블 및 외래 키 참조 테이블)을 포함하거나 shouldExportRelatedTables 매개변수를 true로 설정해야 합니다.테이블이 이름이 지정된 스키마에 있는 경우 정규화된 이름을 사용하세요. 예를 들어 sch1.foo에서 sch1은 스키마 이름이고 foo은 테이블 이름입니다. 기본값은 빈 값입니다.
  • shouldExportRelatedTables: 관련 테이블을 포함할지 여부입니다. 이 매개변수는 tableNames 매개변수와 함께 사용됩니다. 기본값은 false입니다.
  • spannerPriority: Spanner 호출의 요청 우선순위입니다. 가능한 값은 HIGH, MEDIUM, LOW입니다. 기본값은 MEDIUM입니다.
  • dataBoostEnabled: Spanner Data Boost의 컴퓨팅 리소스를 사용하여 Spanner OLTP 워크플로에 거의 영향을 주지 않고 작업을 실행하도록 true로 설정합니다. true로 설정된 경우 spanner.databases.useDataBoost IAM 권한도 필요합니다. 자세한 내용은 Data Boost 개요 (https://cloud.google.com/spanner/docs/databoost/databoost-overview)를 참고하세요. 기본값은 false입니다.

템플릿 실행

콘솔

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

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

    cloud-spanner-export-SPANNER_INSTANCE_ID-SPANNER_DATABASE_NAME

    다음을 바꿉니다.

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

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

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

gcloud

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

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

다음을 바꿉니다.

  • JOB_NAME: 선택한 고유한 작업 이름

    Google Cloud 콘솔의 Spanner 부분에 표시되는 작업의 경우 작업 이름이 cloud-spanner-export-INSTANCE_ID-DATABASE_ID 형식과 일치해야 합니다.

  • VERSION: 사용할 템플릿 버전

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

  • REGION_NAME: Dataflow 작업을 배포할 리전(예: us-central1)
  • GCS_STAGING_LOCATION: 임시 파일 쓰기 경로(예: gs://mybucket/temp)
  • INSTANCE_ID: Spanner 인스턴스 ID
  • DATABASE_ID: Spanner 데이터베이스 ID
  • GCS_DIRECTORY: Avro 파일을 내보내고 에서 가져올 Cloud Storage 경로

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/Cloud_Spanner_to_GCS_Avro
{
   "jobName": "JOB_NAME",
   "parameters": {
       "instanceId": "INSTANCE_ID",
       "databaseId": "DATABASE_ID",
       "outputDir": "gs://GCS_DIRECTORY"
   }
}

다음을 바꿉니다.

  • PROJECT_ID: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 ID
  • JOB_NAME: 선택한 고유한 작업 이름

    Google Cloud 콘솔의 Spanner 부분에 표시되는 작업의 경우 작업 이름이 cloud-spanner-export-INSTANCE_ID-DATABASE_ID 형식과 일치해야 합니다.

  • VERSION: 사용할 템플릿 버전

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

  • LOCATION: Dataflow 작업을 배포할 리전(예: us-central1)
  • GCS_STAGING_LOCATION: 임시 파일 쓰기 경로(예: gs://mybucket/temp)
  • INSTANCE_ID: Spanner 인스턴스 ID
  • DATABASE_ID: Spanner 데이터베이스 ID
  • GCS_DIRECTORY: Avro 파일을 내보낼 Cloud Storage 경로

다음 단계