Dataflow 模板可让您将流水线暂存在 Cloud Storage 中,并在各种环境中运行这些流水线。您可以使用一个 Google 提供的模板,也可以创建自定义模板。
与传统的 Dataflow 部署相比,模板会为您提供更多优势,例如:
- 您不需要在每次运行流水线时重新编译代码。
- 您可以在没有开发环境以及传统部署中常见的相关依赖项的情况下运行流水线。这可以帮助您有效安排周期性批处理作业。
- 运行时参数允许您自定义流水线执行过程。
- 非技术用户可以通过 Google Cloud Console、
gcloud
命令行工具或 REST API 运行模板。
比较传统作业和模板作业执行
Dataflow 模板引入了与传统作业执行工作流不同的全新开发和执行工作流。模板工作流将开发步骤与暂存和执行步骤分开。
传统 Dataflow 作业
Cloud Dataflow 流水线开发和作业执行过程均发生在开发环境中。
传统 Dataflow 作业的典型工作流如下:
- 开发者创建开发环境并开发其流水线。该环境包括 Apache Beam SDK 和其他依赖项。
- 用户从开发环境运行流水线。Cloud Dataflow SDK 将文件暂存在 Cloud Storage 中、创建作业请求文件,并将该文件提交到 Dataflow 服务。
模板 Dataflow 作业
如果您使用 Dataflow 模板,则暂存步骤与执行步骤将分开进行。这种分离可让您更灵活地决定谁可以运行作业以及从何处运行作业。
模板 Dataflow 作业的典型工作流如下:
- 开发者创建开发环境并开发其流水线。该环境包括 Apache Beam SDK 和其他依赖项。
- 开发者运行流水线并创建模板。Apache Beam SDK 在 Cloud Storage 中暂存文件、创建模板文件(类似于作业请求),并将模板文件保存在 Cloud Storage 中。
- 其他用户可以使用 Cloud Console、
gcloud
命令行工具或 REST API 轻松运行作业,以向 Dataflow 服务提交模板文件执行请求。
Flex 模板 Dataflow 作业
如果您使用 Dataflow Flex 模板,则暂存步骤与执行步骤将分开进行。这种分离可让您更灵活地决定谁可以运行作业、从何处运行作业,以及根据输入和输出参数决定作业执行步骤。
Flex 模板 Dataflow 作业的典型工作流如下:
- 开发者创建开发环境并开发其流水线。该环境包括 Apache Beam SDK 和其他依赖项。
- 开发者将流水线打包到 Docker 容器中,然后使用
gcloud
命令行工具创建 Flex 模板文件并保存到 Cloud Storage 中。 - 其他用户可以使用 Cloud Console、
gcloud
命令行工具或 REST API 轻松运行作业,以向 Dataflow 服务提交 Flex 模板文件执行请求。
准备工作
要创建自己的模板,请确保您的 Apache Beam SDK 版本支持创建模板。
Java:SDK 2.x
如需使用 Java 版 Dataflow SDK 2.x 创建模板,您必须具备 2.0.0-beta3 或更高版本。
Python
如需使用 Python 版 Dataflow SDK 2.x 创建模板,您必须具备 2.0.0 或更高版本。
Java:SDK 1.x
如需使用 gcloud
命令行工具运行模板,您必须具备 Cloud SDK 138.0.0 或更高版本。