File Format Conversion (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

在 shell 或终端中,运行模板:

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 架构文件的路径

后续步骤