Streaming Data Generator to Pub/Sub, BigQuery, Cloud Storage 템플릿

Streaming Data Generator 템플릿은 지정된 속도로 사용자가 제공한 스키마를 기반으로 무제한 또는 고정된 수의 종합 레코드 또는 메시지를 생성하는 데 사용됩니다. 호환되는 대상에는 Pub/Sub 주제, BigQuery 테이블, Cloud Storage 버킷이 있습니다.

다음은 몇 가지 가능한 사용 사례입니다.

  • Pub/Sub 주제에 대한 대규모 실시간 이벤트 게시를 시뮬레이션하여 게시된 이벤트를 처리하는 데 필요한 소비자의 수와 크기를 측정하고 결정합니다.
  • BigQuery 테이블 또는 Cloud Storage 버킷에 합성 데이터를 생성하여 성능 벤치마크를 평가하거나 개념 증명을 수행합니다.

지원되는 싱크 및 인코딩 형식

다음 표에서는 이 템플릿에서 지원하는 싱크 및 인코딩 형식을 설명합니다.
JSON Avro Parquet
Pub/Sub 아니요
BigQuery 아니요 아니요
Cloud Storage

파이프라인 요구사항

  • 작업자 서비스 계정에 Dataflow 작업자(roles/dataflow.worker) 할당 역할이 필요합니다. 자세한 내용은 IAM 소개를 참조하세요.
  • 생성된 데이터의 JSON 템플릿이 포함된 스키마 파일을 만듭니다. 이 템플릿은 JSON 데이터 생성기 라이브러리를 사용하므로 스키마의 각 필드에 다양한 faker 함수를 제공할 수 있습니다. 자세한 내용은 json-data-generator 문서를 확인하세요.

    예를 들면 다음과 같습니다.

    {
      "id": {{integer(0,1000)}},
      "name": "{{uuid()}}",
      "isInStock": {{bool()}}
    }
    
  • 스키마 파일을 Cloud Storage 버킷에 업로드합니다.
  • 실행하기 전에 출력 대상이 있어야 합니다. 대상은 싱크 유형에 따라 Pub/Sub 주제, BigQuery 테이블 또는 Cloud Storage 버킷이어야 합니다.
  • 출력 인코딩이 Avro 또는 Parquet이면 Avro 스키마 파일을 만들어 Cloud Storage 위치에 저장합니다.
  • 작업자 서비스 계정에 원하는 대상에 따라 추가 IAM 역할을 할당합니다.
    대상 추가적으로 필요한 IAM 역할 적용되는 리소스
    Pub/Sub Pub/Sub 게시자(roles/pubsub.publisher)
    (자세한 내용은 IAM으로 Pub/Sub 액세스 제어 참조)
    Pub/Sub 주제
    BigQuery BigQuery 데이터 편집자(roles/bigquery.dataEditor)
    (자세한 내용은 IAM으로 BigQuery 액세스 제어 참조)
    BigQuery 데이터 세트
    Cloud Storage Cloud Storage 객체 관리자(roles/storage.objectAdmin)
    (자세한 내용은 IAM으로 Cloud Storage 액세스 제어 참조)
    Cloud Storage 버킷

템플릿 매개변수

매개변수 설명
schemaLocation 스키마 파일의 위치입니다. 예를 들면 gs://mybucket/filename.json입니다.
qps 초당 게시될 메시지 수입니다. 예를 들면 100입니다.
sinkType (선택사항) 출력 싱크 유형입니다. 가능한 값은 PUBSUB, BIGQUERY, GCS입니다. 기본값은 PUBSUB입니다.
outputType (선택사항) 출력 인코딩 유형입니다. 가능한 값은 JSON, AVRO, PARQUET입니다. 기본값은 JSON입니다.
avroSchemaLocation (선택사항) AVRO 스키마 파일의 위치입니다. outputType이 AVRO 또는 PARQUET인 경우 필수입니다. 예를 들면 gs://mybucket/filename.avsc입니다.
topic (선택사항) 파이프라인에서 데이터를 게시해야 하는 Pub/Sub 주제의 이름입니다. sinkType이 Pub/Sub인 경우 필수입니다. 예를 들면 projects/my-project-id/topics/my-topic-id입니다.
outputTableSpec (선택사항) 출력 BigQuery 테이블의 이름입니다. sinkType이 BigQuery인 경우 필수입니다. 예를 들면 my-project-ID:my_dataset_name.my-table-name입니다.
writeDisposition (선택사항) BigQuery 쓰기 처리입니다. 가능한 값은 WRITE_APPEND, WRITE_EMPTY 또는 WRITE_TRUNCATE입니다. 기본값은 WRITE_APPEND입니다.
outputDeadletterTable (선택사항) 실패한 레코드를 저장할 출력 BigQuery 테이블의 이름입니다. 제공되지 않으면 파이프라인은 실행 중에 이름이 {output_table_name}_error_records인 테이블을 만듭니다. 예를 들면 my-project-ID:my_dataset_name.my-table-name입니다.
outputDirectory (선택사항) 출력 Cloud Storage 위치의 경로입니다. sinkType이 Cloud Storage인 경우 필수입니다. 예를 들면 gs://mybucket/pathprefix/입니다.
outputFilenamePrefix (선택사항) Cloud Storage에 기록된 출력 파일의 파일 이름 프리픽스입니다. 기본값은 output-입니다.
windowDuration (선택사항) Cloud Storage에 출력이 기록되는 기간 간격입니다. 기본값은 1m입니다. 즉, 1분입니다.
numShards (선택사항) 최대 출력 샤드 수입니다. sinkType이 Cloud Storage이고 1 이상의 숫자로 설정되어야 하는 경우 필수입니다.
messagesLimit (선택사항) 출력 메시지의 최대 개수입니다. 기본값은 0이며 무제한을 의미합니다.
autoscalingAlgorithm (선택사항) 작업자 자동 확장에 사용되는 알고리즘입니다. 가능한 값은 자동 확장을 사용 설정하는 THROUGHPUT_BASED 또는 중지하는 NONE입니다.
maxNumWorkers (선택사항) 최대 작업자 머신 수입니다. 예를 들면 10입니다.

템플릿 실행

콘솔

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

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

  5. Dataflow 템플릿 드롭다운 메뉴에서 the Streaming Data Generator 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/Streaming_Data_Generator \
    --parameters \
schemaLocation=SCHEMA_LOCATION,\
qps=QPS,\
topic=PUBSUB_TOPIC
  

다음을 바꿉니다.

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

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

  • SCHEMA_LOCATION: Cloud Storage에서 스키마 파일의 경로입니다. 예를 들면 gs://mybucket/filename.json입니다.
  • QPS: 초당 게시되는 메시지 수입니다.
  • PUBSUB_TOPIC: 출력 Pub/Sub 주제입니다. 예를 들면 projects/my-project-id/topics/my-topic-id입니다.

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": {
          "schemaLocation": "SCHEMA_LOCATION",
          "qps": "QPS",
          "topic": "PUBSUB_TOPIC"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/Streaming_Data_Generator",
   }
}
  

다음을 바꿉니다.

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

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

  • SCHEMA_LOCATION: Cloud Storage에서 스키마 파일의 경로입니다. 예를 들면 gs://mybucket/filename.json입니다.
  • QPS: 초당 게시되는 메시지 수입니다.
  • PUBSUB_TOPIC: 출력 Pub/Sub 주제입니다. 예를 들면 projects/my-project-id/topics/my-topic-id입니다.

다음 단계