파일 형식 변환(Avro, Parquet, CSV) 템플릿

파일 형식 변환 템플릿은 Cloud Storage에 저장된 파일을 지원되는 형식에서 다른 형식으로 변환하는 일괄 파이프라인입니다.

다음과 같은 형식 변환이 지원됩니다.

  • CSV에서 Avro로
  • CSV에서 Parquet로
  • Avro에서 Parquet로
  • Parquet에서 Avro로

파이프라인 요구사항

  • 파이프라인을 실행하기 전에 출력 Cloud Storage 버킷이 있어야 합니다.

템플릿 매개변수

매개변수 설명
inputFileFormat 입력 파일 형식입니다. [csv, avro, parquet] 중 하나여야 합니다.
outputFileFormat 출력 파일 형식입니다. [avro, parquet] 중 하나여야 합니다.
inputFileSpec 입력 파일의 Cloud Storage 경로 패턴입니다. 예를 들면 gs://bucket-name/path/*.csv입니다.
outputBucket 출력 파일을 쓸 Cloud Storage 폴더입니다. 이 경로는 슬래시로 끝나야 합니다. 예를 들면 gs://bucket-name/output/입니다.
schema Avro 스키마 파일의 Cloud Storage 경로입니다(예시: gs://bucket-name/schema/my-schema.avsc).
containsHeaders (선택사항) 입력 CSV 파일에는 헤더 레코드가 포함됩니다(true/false). 기본값은 false입니다. CSV 파일을 읽을 때만 필요합니다.
csvFormat (선택사항) 레코드 파싱에 사용할 CSV 형식 지정입니다. 기본값은 Default입니다. 자세한 내용은 Apache Commons CSV 형식을 참조하세요.
delimiter (선택사항) 입력 CSV 파일에서 사용하는 필드 구분 기호입니다.
outputFilePrefix (선택사항) 출력 파일 프리픽스입니다. 기본값은 output입니다.
numShards (선택사항) 출력 파일 샤드 수입니다.

템플릿 실행

콘솔

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

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

  5. Dataflow 템플릿 드롭다운 메뉴에서 the Convert file formats 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/File_Format_Conversion \
    --parameters \
inputFileFormat=INPUT_FORMAT,\
outputFileFormat=OUTPUT_FORMAT,\
inputFileSpec=INPUT_FILES,\
schema=SCHEMA,\
outputBucket=OUTPUT_FOLDER

다음을 바꿉니다.

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

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

  • INPUT_FORMAT: 입력 파일의 파일 형식입니다. [csv, avro, parquet] 중 하나여야 합니다.
  • OUTPUT_FORMAT: 출력 파일의 파일 형식입니다. [avro, parquet] 중 하나여야 합니다.
  • INPUT_FILES: 입력 파일의 경로 패턴입니다.
  • OUTPUT_FOLDER: 출력 파일의 Cloud Storage 폴더입니다.
  • SCHEMA: Avro 스키마 파일의 경로입니다.

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": {
          "inputFileFormat": "INPUT_FORMAT",
          "outputFileFormat": "OUTPUT_FORMAT",
          "inputFileSpec": "INPUT_FILES",
          "schema": "SCHEMA",
          "outputBucket": "OUTPUT_FOLDER"
      },
      "containerSpecGcsPath": "gs://dataflow-templates-LOCATION/VERSION/flex/File_Format_Conversion",
   }
}

다음을 바꿉니다.

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

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

  • INPUT_FORMAT: 입력 파일의 파일 형식입니다. [csv, avro, parquet] 중 하나여야 합니다.
  • OUTPUT_FORMAT: 출력 파일의 파일 형식입니다. [avro, parquet] 중 하나여야 합니다.
  • INPUT_FILES: 입력 파일의 경로 패턴입니다.
  • OUTPUT_FOLDER: 출력 파일의 Cloud Storage 폴더입니다.
  • SCHEMA: Avro 스키마 파일의 경로입니다.

다음 단계