BigQuery to Bigtable 템플릿

BigQuery to Bigtable 템플릿은 BigQuery 테이블의 데이터를 기존 Bigtable 테이블로 복사하는 일괄 파이프라인입니다. 이 템플릿에서는 전체 테이블을 읽거나 제공된 쿼리를 사용하여 특정 레코드를 읽을 수 있습니다.

파이프라인 요구사항

  • 소스 BigQuery 테이블이 있어야 합니다.
  • Bigtable 테이블이 있어야 합니다.
  • 작업자 서비스 계정에는 roles/bigquery.datasets.create 권한이 필요합니다. 자세한 내용은 IAM 소개를 참조하세요.

템플릿 매개변수

필수 매개변수

  • readIdColumn: 행의 고유 식별자를 저장하는 BigQuery 열의 이름입니다.
  • bigtableWriteInstanceId: 테이블이 있는 Bigtable 인스턴스의 ID입니다.
  • bigtableWriteTableId: 작성할 Bigtable 테이블의 ID입니다.
  • bigtableWriteColumnFamily: 데이터를 작성할 Bigtable 테이블의 column family 이름입니다.

선택적 매개변수

  • inputTableSpec: 읽을 BigQuery 테이블입니다. inputTableSpec을 지정하는 경우 템플릿은 BigQuery Storage Read API (https://cloud.google.com/bigquery/docs/reference/storage)를 사용하여 BigQuery 스토리지에서 직접 데이터를 읽습니다. Storage Read API의 제한사항에 대한 자세한 내용은 https://cloud.google.com/bigquery/docs/reference/storage#limitations를 참고하세요. inputTableSpec 또는 query를 지정해야 합니다. 두 매개변수를 모두 설정하면 템플릿에서 query 매개변수를 사용합니다. 예를 들면 <BIGQUERY_PROJECT>:<DATASET_NAME>.<INPUT_TABLE>입니다.
  • outputDeadletterTable: 출력 테이블에 도달하지 못한 메시지의 BigQuery 테이블입니다. 테이블이 없으면 파이프라인 실행 중에 생성됩니다. 지정하지 않으면 <outputTableSpec>_error_records이 사용됩니다. 예를 들면 <PROJECT_ID>:<DATASET_NAME>.<DEADLETTER_TABLE>입니다.
  • query: BigQuery에서 데이터를 읽는 데 사용할 SQL 쿼리입니다. BigQuery 데이터 세트가 Dataflow 작업과 다른 프로젝트에 있는 경우 SQL 쿼리에 전체 데이터 세트 이름을 지정합니다(예: <PROJECT_ID>.<DATASET_NAME>.<TABLE_NAME>). useLegacySqltrue가 아닌 한 기본적으로 query 매개변수는 GoogleSQL(https://cloud.google.com/bigquery/docs/introduction-sql)을 사용합니다. inputTableSpec 또는 query를 지정해야 합니다. 두 매개변수를 모두 설정하면 템플릿에서 query 매개변수를 사용합니다. 예를 들면 select * from sampledb.sample_table입니다.
  • useLegacySql: legacy SQL을 사용하려면 true로 설정합니다. 이 매개변수는 query 매개변수를 사용할 때만 적용됩니다. 기본값은 false입니다.
  • queryLocation: 기본 테이블 권한 없이 승인된 뷰에서 읽을 때 필요합니다. 예를 들면 US입니다.
  • bigtableRpcAttemptTimeoutMs: 각 Bigtable RPC 시도의 제한 시간(밀리초)입니다.
  • bigtableRpcTimeoutMs: Bigtable RPC 작업의 총 제한 시간(밀리초)입니다.
  • bigtableAdditionalRetryCodes: 추가 재시도 코드입니다. 예를 들면 RESOURCE_EXHAUSTED,DEADLINE_EXCEEDED입니다.
  • bigtableWriteAppProfile: 내보내기에 사용할 Bigtable 애플리케이션 프로필의 ID입니다. 앱 프로필을 지정하지 않으면 Bigtable에서 인스턴스의 기본 앱 프로필(https://cloud.google.com/bigtable/docs/app-profiles#default-app-profile)을 사용합니다.
  • bigtableWriteProjectId: 데이터를 작성할 Bigtable 인스턴스가 포함된 Google Cloud 프로젝트의 ID입니다.
  • bigtableBulkWriteLatencyTargetMs: 지연 시간 기반 제한을 위한 Bigtable의 지연 시간 목표(밀리초)입니다.
  • bigtableBulkWriteMaxRowKeyCount: Bigtable 일괄 쓰기 작업의 최대 row key 수입니다.
  • bigtableBulkWriteMaxRequestSizeBytes: Bigtable 일괄 쓰기 작업별로 포함할 최대 바이트 양입니다.

템플릿 실행

콘솔

  1. Dataflow 템플릿에서 작업 만들기 페이지로 이동합니다.
  2. 템플릿에서 작업 만들기로 이동
  3. 작업 이름 필드에 고유한 작업 이름을 입력합니다.
  4. (선택사항): 리전 엔드포인트의 드롭다운 메뉴에서 값을 선택합니다. 기본 리전은 us-central1입니다.

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

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

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/BigQuery_to_Bigtable \
    --parameters \
readIdColumn=READ_COLUMN_ID,\
inputTableSpec=INPUT_TABLE_SPEC,\
bigtableWriteInstanceId=BIGTABLE_INSTANCE_ID,\
bigtableWriteTableId=BIGTABLE_TABLE_ID,\
bigtableWriteColumnFamily=BIGTABLE_COLUMN_FAMILY

다음을 바꿉니다.

  • PROJECT_ID: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 ID
  • JOB_NAME: 선택한 고유한 작업 이름
  • REGION_NAME: Dataflow 작업을 배포할 리전(예: us-central1)
  • VERSION: 사용할 템플릿 버전

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

  • READ_COLUMN_ID: BigQuery 고유 ID 열
  • INPUT_TABLE_SPEC: BigQuery 테이블 이름
  • BIGTABLE_INSTANCE_ID: Bigtable 인스턴스 ID
  • BIGTABLE_TABLE_ID: Bigtable 테이블 ID
  • BIGTABLE_COLUMN_FAMILY: Bigtable 테이블 column family

API

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

POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/flexTemplates:launch
{
   "launch_parameter": {
      "jobName": "JOB_NAME",
      "parameters": {
          "readIdColumn": "READ_COLUMN_ID",
          "inputTableSpec": "INPUT_TABLE_SPEC",
          "bigtableWriteInstanceId": "BIGTABLE_INSTANCE_ID",
          "bigtableWriteTableId": "BIGTABLE_TABLE_ID",
          "bigtableWriteColumnFamily": "BIGTABLE_COLUMN_FAMILY"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/BigQuery_to_Bigtable",
   }
}

다음을 바꿉니다.

  • PROJECT_ID: Dataflow 작업을 실행하려는 Google Cloud 프로젝트 ID
  • JOB_NAME: 선택한 고유한 작업 이름
  • LOCATION: Dataflow 작업을 배포할 리전(예: us-central1)
  • VERSION: 사용할 템플릿 버전

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

  • READ_COLUMN_ID: BigQuery 고유 ID 열
  • INPUT_TABLE_SPEC: BigQuery 테이블 이름
  • BIGTABLE_INSTANCE_ID: Bigtable 인스턴스 ID
  • BIGTABLE_TABLE_ID: Bigtable 테이블 ID
  • BIGTABLE_COLUMN_FAMILY: Bigtable 테이블 column family

다음 단계