Dataflow 数据流水线模板

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

借助 Dataflow 模板,您可以封装 Dataflow 流水线以方便部署。之后,具备必要权限的任何人都可以使用模板来部署封装的流水线。您可以创建自己的自定义 Dataflow 模板,也可以使用 Google 为常见用例提供的预构建模板

流水线模板的优势

与直接将流水线部署到 Dataflow 相比,使用模板可以提供多项优势:

  • 模板将流水线的设计与部署分隔开。例如,可以由开发者创建模板,之后再由数据科学家来部署模板。
  • 可以在模板中添加各种参数,这样就可以在部署模板时自定义流水线。
  • 您可以使用 Google Cloud 控制台、Google Cloud CLI 或 REST API 调用来部署模板。您不需要在本地机器上安装开发环境或任何流水线依赖项。
  • 模板是一种代码工件,可以存储在源代码控制代码库中,并在持续集成 (CI/CD) 流水线中使用。

Dataflow 支持两种类型的模板:Flex 模板(较新)和经典模板。如果您要创建新的 Dataflow 模板,我们建议您将其创建为 Flex 模板。

模板工作流

Dataflow 模板的使用过程涉及以下简要步骤:

  1. 开发者需设置开发环境并开发流水线。该环境应包含 Apache Beam SDK 和其他依赖项。
  2. 之后,需根据模板类型(Flex 或经典)执行以下操作:
    • 对于 Flex 模板,开发者需将流水线封装到 Docker 映像中,然后将该映像推送到 Container Registry 或 Artifact Registry,并将模板规范文件上传到 Cloud Storage。
    • 对于经典模板,开发者需运行流水线,创建模板文件并将模板暂存到 Cloud Storage。
  3. 接下来,其他用户需向 Dataflow 服务提交运行模板的请求。
  4. 之后,Dataflow 便会基于模板创建流水线。

Flex 模板与经典模板对比

如果使用 Flex 模板,流水线将作为 Docker 映像封装到 Container Registry 或 Artifact Registry 中,并且模板规范文件会存放在 Cloud Storage 中。模板规范包含指向 Docker 映像的指针。运行模板时,Dataflow 服务会启动启动器虚拟机,拉取 Docker 映像并运行流水线。系统会根据用户提供的运行时参数动态构建执行图。

经典模板则包含 Dataflow 作业图的 JSON 序列化。流水线的代码必须将所有运行时参数都封装在 ValueProvider 接口中。该接口允许用户在部署模板时指定参数值。

与经典模板相比,Flex 模板具有以下优势:

  • 与经典模板不同,Flex 模板不需要借助 ValueProvider 接口来指定输入参数。并非所有 Dataflow 来源和接收器都支持 ValueProvider
  • 经典模板提供的是静态作业图,Flex 模板则可以动态构建作业图。例如,模板可以根据输入参数选择不同的 I/O 连接器。
  • Flex 模板可以在流水线构建期间对虚拟机执行预处理。例如,它可以在该过程中验证输入参数值。

Apache Beam SDK 版本要求

要创建自己的模板,请确保您的 Apache Beam SDK 版本支持创建模板。

Java

如需使用 Java 版 Apache Beam SDK 2.x 创建模板,您必须具备 2.0.0-beta3 或更高版本。

Python

如需使用 Python 版 Apache Beam SDK 2.x 创建模板,您必须具备 2.0.0 或更高版本。

如需使用 Google Cloud CLI 运行模板,您必须具备 Google Cloud CLI 138.0.0 或更高版本。

后续步骤