文件格式转换模板是批处理流水线,用于将 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 |
(可选)输出文件分片数。 |
运行模板
控制台
- 转到 Dataflow 基于模板创建作业页面。 转到“基于模板创建作业”
- 在作业名称字段中,输入唯一的作业名称。
- 可选:对于区域性端点,从下拉菜单中选择一个值。默认区域为
us-central1
。如需查看可以在其中运行 Dataflow 作业的区域列表,请参阅 Dataflow 位置。
- 从 Dataflow 模板下拉菜单中,选择 the Convert file formats template。
- 在提供的参数字段中,输入您的参数值。
- 点击运行作业。
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 项目的 IDJOB_NAME
:您选择的唯一性作业名称REGION_NAME
:要在其中部署 Dataflow 作业的区域,例如us-central1
VERSION
:您要使用的模板的版本您可使用以下值:
latest
,以使用模板的最新版本,该模板在存储桶的未标示日期的父文件夹 (gs://dataflow-templates-REGION_NAME/latest/) 中可用- 版本名称(如
2023-09-12-00_RC00
),以使用模板的特定版本,该版本嵌套在存储桶的相应日期父文件夹 (gs://dataflow-templates-REGION_NAME/) 中
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 项目的 IDJOB_NAME
:您选择的唯一性作业名称LOCATION
:要在其中部署 Dataflow 作业的区域,例如us-central1
VERSION
:您要使用的模板的版本您可使用以下值:
latest
,以使用模板的最新版本,该模板在存储桶的未标示日期的父文件夹 (gs://dataflow-templates-REGION_NAME/latest/) 中可用- 版本名称(如
2023-09-12-00_RC00
),以使用模板的特定版本,该版本嵌套在存储桶的相应日期父文件夹 (gs://dataflow-templates-REGION_NAME/) 中
INPUT_FORMAT
:输入文件的文件格式;必须为[csv, avro, parquet]
中的一个OUTPUT_FORMAT
:输出文件的文件格式;必须为[avro, parquet]
中的一个INPUT_FILES
:输入文件的路径模式OUTPUT_FOLDER
:输出文件的 Cloud Storage 文件夹SCHEMA
:Avro 架构文件的路径
后续步骤
- 了解 Dataflow 模板。
- 参阅 Google 提供的模板列表。