Pub/Sub Avro to BigQuery 템플릿

Pub/Sub Avro to BigQuery 템플릿은 Pub/Sub 구독에서 BigQuery 테이블로 Avro 데이터를 수집하는 스트리밍 파이프라인입니다. BigQuery 테이블에 쓰는 동안 발생하는 모든 오류는 Pub/Sub 처리되지 않은 주제로 스트리밍됩니다.

이 시나리오에 Dataflow 파이프라인을 실행하기 전에 UDF가 있는 Pub/Sub BigQuery 구독이 요구사항을 충족하는지 고려하세요.

파이프라인 요구사항

  • 입력 Pub/Sub 구독이 있어야 합니다.
  • Avro 레코드의 스키마 파일이 Cloud Storage에 있어야 합니다.
  • 처리되지 않은 Pub/Sub 주제가 있어야 합니다.
  • 출력 BigQuery 데이터 세트가 있어야 합니다.

템플릿 매개변수

필수 매개변수

  • schemaPath: Avro 스키마 파일의 Cloud Storage 위치입니다. 예를 들면 gs://path/to/my/schema.avsc입니다.
  • inputSubscription: 읽을 Pub/Sub 입력 구독입니다. 예를 들면 projects/<PROJECT_ID>/subscription/<SUBSCRIPTION_ID>입니다.
  • outputTableSpec: 출력을 작성할 BigQuery 출력 테이블 위치입니다. 예를 들면 <PROJECT_ID>:<DATASET_NAME>.<TABLE_NAME>입니다. 지정된 createDisposition에 따라 사용자가 제공한 Avro 스키마를 사용하여 출력 테이블을 자동으로 만들 수 있습니다.
  • outputTopic: 처리되지 않은 레코드에 사용할 Pub/Sub 주제입니다. 예를 들면 projects/<PROJECT_ID>/topics/<TOPIC_NAME>입니다.

선택적 매개변수

템플릿 실행

콘솔

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

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

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

gcloud

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

gcloud dataflow flex-template run JOB_NAME \
    --region=REGION_NAME \
    --template-file-gcs-location=gs://dataflow-templates-REGION_NAME/VERSION/flex/PubSub_Avro_to_BigQuery \
    --parameters \
schemaPath=SCHEMA_PATH,\
inputSubscription=SUBSCRIPTION_NAME,\
outputTableSpec=BIGQUERY_TABLE,\
outputTopic=DEADLETTER_TOPIC
  

다음을 바꿉니다.

  • JOB_NAME: 선택한 고유한 작업 이름
  • REGION_NAME: Dataflow 작업을 배포할 리전(예: us-central1)
  • VERSION: 사용할 템플릿 버전

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

  • SCHEMA_PATH: Avro 스키마 파일의 Cloud Storage 경로(예: gs://MyBucket/file.avsc).
  • SUBSCRIPTION_NAME: Pub/Sub 입력 구독 이름
  • BIGQUERY_TABLE: BigQuery 출력 테이블 이름
  • DEADLETTER_TOPIC: 처리되지 않은 큐에 사용할 Pub/Sub 주제

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",
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/PubSub_Avro_to_BigQuery",
      "parameters": {
          "schemaPath": "SCHEMA_PATH",
          "inputSubscription": "SUBSCRIPTION_NAME",
          "outputTableSpec": "BIGQUERY_TABLE",
          "outputTopic": "DEADLETTER_TOPIC"
      }
   }
}
  

다음을 바꿉니다.

  • JOB_NAME: 선택한 고유한 작업 이름
  • LOCATION: Dataflow 작업을 배포할 리전(예: us-central1)
  • VERSION: 사용할 템플릿 버전

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

  • SCHEMA_PATH: Avro 스키마 파일의 Cloud Storage 경로(예: gs://MyBucket/file.avsc).
  • SUBSCRIPTION_NAME: Pub/Sub 입력 구독 이름
  • BIGQUERY_TABLE: BigQuery 출력 테이블 이름
  • DEADLETTER_TOPIC: 처리되지 않은 큐에 사용할 Pub/Sub 주제

다음 단계