Pub/Sub Topic to Text Files on Cloud Storage

Pub/Sub to Cloud Storage Text 템플릿은 Pub/Sub 주제에서 레코드를 읽고 텍스트 형식으로 된 일련의 Cloud Storage 파일로 저장하는 스트리밍 파이프라인입니다. 나중에 사용하기 위해 Pub/Sub에 데이터를 빠르게 저장하는 수단으로 템플릿을 사용할 수 있습니다. 기본적으로 템플릿은 5분마다 새 파일을 생성합니다.

파이프라인 요구사항

  • 실행하기 전에 Pub/Sub 주제가 있어야 합니다.
  • 주제에 게시되는 메시지는 텍스트 형식이어야 합니다.
  • 주제에 게시되는 메시지에는 줄바꿈을 사용할 수 없습니다. 각 Pub/Sub 메시지는 출력 파일에 한 줄로 저장됩니다.

템플릿 매개변수

필수 매개변수

  • outputDirectory: 출력 파일을 쓰기 위한 경로와 파일 이름 프리픽스입니다. 예를 들면 gs://bucket-name/path/입니다. 이 값은 슬래시로 끝나야 합니다.
  • outputFilenamePrefix: 윈도우 설정된 각 파일에 넣을 프리픽스입니다. 예를 들면 output-입니다. 기본값은 output입니다.

선택적 매개변수

  • inputTopic: 입력을 읽어올 Pub/Sub 주제입니다. 주제 이름은 projects/<PROJECT_ID>/topics/<TOPIC_NAME> 형식이어야 합니다.
  • userTempLocation: 임시 파일을 출력할 사용자가 제공한 디렉터리입니다. 슬래시로 끝나야 합니다.
  • outputFilenameSuffix: 윈도우 설정된 각 파일에 넣을 서픽스입니다. 일반적으로 .txt 또는 .csv 같은 파일 확장자입니다. 기본값은 빈 값입니다.
  • outputShardTemplate: 샤드 템플릿은 윈도우 설정된 각 파일의 동적 부분을 정의합니다. 기본적으로, 파이프라인은 각 윈도우 내에서 단일 샤드를 사용하여 파일 시스템에 출력합니다. 따라서 모든 데이터가 윈도우별로 한 파일에 출력됩니다. outputShardTemplate의 기본값은 to W-P-SS-of-NN입니다. 여기에서 W은 윈도우 기간, P는 창 정보, S는 샤드 번호, N은 샤드 개수입니다. 단일 파일의 경우 outputShardTemplateSS-of-NN 부분이 00-of-01입니다.
  • yearPattern: 연도 형식을 지정하는 패턴입니다. y 또는 Y 중 하나 이상이어야 합니다. 연도의 대소문자는 차이가 없습니다. 원하는 경우 영숫자 또는 디렉터리(/) 문자가 아닌 문자로 패턴을 래핑합니다. 기본값은 YYYY입니다.
  • monthPattern: 월 형식을 지정하는 패턴입니다. M 문자가 1개 이상이어야 합니다. 원하는 경우 영숫자 또는 디렉터리(/) 문자가 아닌 문자로 패턴을 래핑합니다. 기본값은 MM입니다.
  • dayPattern: 일 형식을 지정하는 패턴입니다. 월의 날짜일 경우 d, 연의 날짜일 경우 D 하나 이상이어야 합니다. 원하는 경우 영숫자 또는 디렉터리(/) 문자가 아닌 문자로 패턴을 래핑합니다. 기본값은 dd입니다.
  • hourPattern: 시간 형식을 지정하는 패턴입니다. H 문자가 1개 이상이어야 합니다. 원하는 경우 영숫자 또는 디렉터리(/) 문자가 아닌 문자로 패턴을 래핑합니다. 기본값은 HH입니다.
  • minutePattern: 분 형식을 지정하는 패턴입니다. m 문자가 1개 이상이어야 합니다. 원하는 경우 영숫자 또는 디렉터리(/) 문자가 아닌 문자로 패턴을 래핑합니다. 기본값은 mm입니다.

템플릿 실행

콘솔

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

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

  5. Dataflow 템플릿 드롭다운 메뉴에서 the Pub/Sub to Text Files on Cloud Storage template을 선택합니다.
  6. 제공된 매개변수 필드에 매개변수 값을 입력합니다.
  7. (선택사항) 정확히 한 번 처리에서 적어도 한 번 스트리밍 모드로 전환하려면 적어도 한 번를 선택합니다.
  8. 작업 실행을 클릭합니다.

gcloud

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

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Cloud_PubSub_to_GCS_Text \
    --region REGION_NAME \
    --staging-location STAGING_LOCATION \
    --parameters \
inputTopic=projects/PROJECT_ID/topics/TOPIC_NAME,\
outputDirectory=gs://BUCKET_NAME/output/,\
outputFilenamePrefix=output-,\
outputFilenameSuffix=.txt

다음을 바꿉니다.

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

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

  • STAGING_LOCATION: 로컬 파일의 스테이징 위치입니다(예: gs://your-bucket/staging).
  • TOPIC_NAME: Pub/Sub 주제 이름
  • BUCKET_NAME: 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_PubSub_to_GCS_Text
{
   "jobName": "JOB_NAME",
   "environment": {
       "ipConfiguration": "WORKER_IP_UNSPECIFIED",
       "additionalExperiments": []
    },
   "parameters": {
       "inputTopic": "projects/PROJECT_ID/topics/TOPIC_NAME"
       "outputDirectory": "gs://BUCKET_NAME/output/",
       "outputFilenamePrefix": "output-",
       "outputFilenameSuffix": ".txt",
   }
}

다음을 바꿉니다.

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

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

  • STAGING_LOCATION: 로컬 파일의 스테이징 위치입니다(예: gs://your-bucket/staging).
  • TOPIC_NAME: Pub/Sub 주제 이름
  • BUCKET_NAME: Cloud Storage 버킷 이름

다음 단계