本页面介绍了如何为 Dataflow 流水线创建 Flex 模板。借助 Flex 模板,您可以打包 Apache Beam 流水线代码,以便在没有开发环境的情况下运行流水线。通过创建 Flex 模板,任何具有正确权限的用户都可以将您的流水线作为 Dataflow 作业运行。
如需查看有关创建和运行 Flex 模板的端到端教程,请参阅构建和运行示例 Flex 模板。
概览
Flex 模板由以下组件组成:
存储在 Artifact Registry 中的容器映像。 容器负责启动 Dataflow 作业。
存储在 Cloud Storage 中的 JSON 规范文件。此文件包含指向容器映像的指针和其他元数据。
在创建 Flex 模板之前,您必须使用 Apache Beam SDK 编写流水线代码。如需了解详情,请参阅使用 Apache Beam 构建流水线。
必须在调用 run 后退出用于构建流水线的程序,流水线才能启动。请勿调用 waitUntilFinish (Java) 或 wait_until_finish (Python),因为这些函数会阻塞并阻止 Flex 模板运行。
所需权限
如需获得构建 Flex 模板所需的权限,请让管理员向您授予项目的以下 IAM 角色:
-
Storage Admin (
roles/storage.admin) -
Cloud Build Editor (
roles/cloudbuild.builds.editor) -
Artifact Registry Writer (
roles/artifactregistry.writer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
模板元数据
您可以选择为模板提供其他元数据,包括以下内容:
流水线参数:声明流水线使用的任何自定义流水线选项。当您提交 Flex 模板作业时,Dataflow 会验证参数。如果您使用Google Cloud 控制台运行模板,则基于模板创建作业对话框会包含元数据中声明的流水线参数。
流式传输支持:您可以指定流水线是否支持流式传输,如果支持,则指定是支持“正好一次”模式还是“至少一次”模式。此元数据使 Google Cloud 控制台能够在您运行模板时显示相关的流水线选项。
如需添加其他元数据,请创建一个包含元数据参数的 JSON 文件。在 gcloud dataflow flex-template build 命令的 --metadata-file 标志中指定此文件。元数据文件的内容会合并到模板规范文件中。如需了解详情,请参阅构建 Flex 模板。
元数据参数
| 参数键 | 必需 | 值的说明 | |
|---|---|---|---|
name |
是 | 模板的名称。 | |
description |
否 | 对模板进行说明的一小段文本。 | |
streaming |
否 | 如果为 true,则此模板支持流处理。默认值为 false。 |
|
supportsAtLeastOnce |
否 | 如果为 true,则此模板支持“至少一次”处理。默认值为 false。如果模板设计为支持“至少一次”流处理模式,请将此参数设置为 true。
|
|
supportsExactlyOnce |
否 | 如果为 true,则此模板支持“正好一次”处理。默认值为 true。 |
|
defaultStreamingMode |
否 | 默认流处理模式,适用于同时支持“至少一次”模式和“正好一次”模式的模板。请使用以下某个值:"AT_LEAST_ONCE"、"EXACTLY_ONCE"。如果未指定,则默认流处理模式为“正好一次”。
|
|
parameters |
否 | 模板使用的一组附加参数。默认情况下,使用空数组。 | |
name |
是 | 模板中使用的参数的名称。 | |
label |
是 | 人类可读的字符串,用于在 Google Cloud 控制台中标记参数。 | |
helpText |
是 | 对参数进行说明的一小段文本。 | |
isOptional |
否 | 如果参数是必需的,则为 false;如果参数是可选的,则为 true。除非设置了值,否则 isOptional 默认为 false。
如果您没有为元数据添加此参数键,则元数据会成为必需参数。 |
|
regexes |
否 | 一组字符串形式的 POSIX-egrep 正则表达式(用于验证参数的值)。例如,["^[a-zA-Z][a-zA-Z0-9]+"] 是一个正则表达式,用于验证以字母开头,并且包含一个或多个字符的值。默认使用空数组。 |
示例元数据文件
Java
{ "name": "Streaming Beam SQL", "description": "An Apache Beam streaming pipeline that reads JSON encoded messages from Pub/Sub, uses Beam SQL to transform the message data, and writes the results to a BigQuery", "parameters": [ { "name": "inputSubscription", "label": "Pub/Sub input subscription.", "helpText": "Pub/Sub subscription to read from.", "regexes": [ "[a-zA-Z][-_.~+%a-zA-Z0-9]{2,}" ] }, { "name": "outputTable", "label": "BigQuery output table", "helpText": "BigQuery table spec to write to, in the form 'project:dataset.table'.", "isOptional": true, "regexes": [ "[^:]+:[^.]+[.].+" ] } ] }
Python
{ "name": "Streaming beam Python flex template", "description": "Streaming beam example for python flex template.", "parameters": [ { "name": "input_subscription", "label": "Input PubSub subscription.", "helpText": "Name of the input PubSub subscription to consume from.", "regexes": [ "projects/[^/]+/subscriptions/[a-zA-Z][-_.~+%a-zA-Z0-9]{2,}" ] }, { "name": "output_table", "label": "BigQuery output table name.", "helpText": "Name of the BigQuery output table name.", "isOptional": true, "regexes": [ "([^:]+:)?[^.]+[.].+" ] } ] }
您可以从 Dataflow 模板目录下载 Google 提供的模板的元数据文件。
环境变量
构建 Flex 模板时,在 gcloud dataflow flex-template build 命令的 --env 标志中指定以下环境变量。如果您使用的是自定义映像,请在 Dockerfile 中设置这些环境变量。
Java
| ENV | 说明 | 必需 |
|---|---|---|
FLEX_TEMPLATE_JAVA_MAIN_CLASS |
指定启动 Flex 模板要运行的 Java 类。 | 是 |
FLEX_TEMPLATE_JAVA_CLASSPATH |
指定类文件的位置。 | 是 |
FLEX_TEMPLATE_JAVA_OPTIONS |
指定启动 Flex 模板时要传递的 Java 选项。 | 否 |
在 Dockerfile 中指定 FLEX_TEMPLATE_JAVA_MAIN_CLASS 和 FLEX_TEMPLATE_JAVA_CLASSPATH。
Python
| ENV | 说明 | 必需 |
|---|---|---|
FLEX_TEMPLATE_PYTHON_PY_FILE |
指定启动 Flex 模板要运行的 Python 文件。 | 是 |
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE |
指定包含流水线依赖项的需求文件。 如需了解详情,请参阅 Apache Beam 文档中的 PyPI 依赖项。 | 否 |
FLEX_TEMPLATE_PYTHON_SETUP_FILE |
指定流水线软件包“setup.py”文件的路径。 如需了解详情,请参阅 Apache Beam 文档中的多个文件依赖项。 | 否 |
FLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES |
指定不公开提供的软件包。如需了解如何使用额外的软件包,请参阅本地或非 PyPI 依赖项。 |
否 |
FLEX_TEMPLATE_PYTHON_PY_OPTIONS |
指定启动 Flex 模板时要传递的 Python 选项。 | 否 |
在 Dockerfile 中指定 FLEX_TEMPLATE_PYTHON_PY_FILE。
如需管理流水线依赖项,请在 Dockerfile 中设置变量,例如:
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILEFLEX_TEMPLATE_PYTHON_PY_OPTIONSFLEX_TEMPLATE_PYTHON_SETUP_FILEFLEX_TEMPLATE_PYTHON_EXTRA_PACKAGES
例如,我们在 GitHub 的 Streaming in Python Flex 模板教程中设置了以下环境变量:
ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="${WORKDIR}/requirements.txt"
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/streaming_beam.py"
Go
| ENV | 说明 | 必需 |
|---|---|---|
FLEX_TEMPLATE_GO_BINARY |
指定要运行的 Go 二进制文件。 | 是 |
在 Dockerfile 中指定 FLEX_TEMPLATE_GO_BINARY。
Flex 模板映像
Flex 模板包含一个用于启动 Dataflow 流水线的容器映像。运行 Flex 模板作业时,Dataflow 服务会从 Artifact Registry 下载容器映像并启动容器。容器负责启动 Dataflow 作业。
Google 维护了一组可供您使用的 Flex 模板基础映像。不过,如果流水线需要自定义容器映像,我们建议为 Flex 模板使用相同的映像。这样一来,Flex 模板启动器便会包含与流水线运行时容器相同的依赖项。
自定义容器映像
如需创建自定义 Flex 模板映像,请在 Dockerfile 中添加以下步骤:
将 Flex 模板启动器二进制文件从其中一个 Google 提供的基础映像复制到您的映像。启动器二进制文件位于以下路径中:
Java
/opt/google/dataflow/java_template_launcherPython
/opt/google/dataflow/python_template_launcherGo
/opt/google/dataflow/go_template_launcher复制启动流水线作业所需的制品,例如 Python 文件、JAR 文件或 Go 二进制文件。
设置环境变量中列出的环境变量。
以下示例展示了 Python 流水线的 Dockerfile:
# Flex Template base image. Used here to get the launcher binary.
FROM gcr.io/dataflow-templates-base/IMAGE_NAME:TAG as template_launcher
# Apache Beam SDK image. This is the base image for the pipeline job.
FROM apache/beam_python3.10_sdk:2.69.0
# Customize the image for your pipeline.
# [...]
# Configure the Flex Template.
COPY --from=template_launcher /opt/google/dataflow/python_template_launcher /opt/google/dataflow/python_template_launcher
COPY my_pipeline.py /template/
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/my_pipeline.py"
替换以下内容:
IMAGE_NAME:Google 提供的基础映像。例如:python311-template-launcher-base。TAG:Flex 模板基础映像中列出的基础映像的版本标记。 为了提高稳定性和问题排查,请避免使用latest。请改为固定到特定版本标记。
如需查看遵循此方法的教程,请参阅具有依赖项和自定义容器映像的流水线 Flex 模板。
构建 Flex 模板
如需构建 Flex 模板,请使用 gcloud dataflow flex-template build 命令。此命令会创建以下制品:
- 存储在 Cloud Storage 中的模板规范文件
- 启动器容器映像,存储在 Artifact Registry 中
使用 Google 提供的基础映像
如需使用 Google 提供的基础映像运行 Flex 模板,请运行以下命令:
Java
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" \ --sdk-language "JAVA" \ --flex-template-base-image "BASE_IMAGE" \ --metadata-file "METADATA_FILE" \ --jar "JAR_FILE" \ --env "FLEX_TEMPLATE_JAVA_MAIN_CLASS=JAVA_MAIN_CLASS"
替换以下内容:
-
BUCKET_NAME:用于存储模板规范文件的 Cloud Storage 存储桶的名称 -
TEMPLATE_FILE_NAME:要创建的模板规范文件的名称。示例:my_template.json -
LOCATION:Artifact Registry 代码库的位置 -
PROJECT_ID: Google Cloud 项目 ID -
REPOSITORY:您的 Artifact Registry 代码库的名称 -
IMAGE:Flex 模板容器映像的名称 -
TAG:Flex 模板容器映像的标记 -
<p
BASE_IMAGE: the base image to use. Specify one of the following:-
A predefined label, such as "JAVA17". For more information, see the documentation
for the
--flex-template-base-imageflag. -
The full
gcr.iopath to a specific container version, in the following format:gcr.io/dataflow-templates-base/IMAGE:TAG.
-
A predefined label, such as "JAVA17". For more information, see the documentation
for the
-
METADATA_FILE:元数据文件的本地路径。如需了解详情,请参阅模板元数据。 -
JAR_FILE:流水线代码的 JAR 文件的本地路径。如果有多个 JAR 文件,请将其格式设置为以逗号分隔的列表,或在单独的--jar标志中指定这些文件。 -
JAVA_MAIN_CLASS:要运行的 Java 类的名称。如需了解详情,请参阅环境变量。
Python
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" \ --sdk-language "PYTHON" \ --flex-template-base-image "BASE_IMAGE" \ --metadata-file "METADATA_FILE" \ --py-path "PYTHON_FILE_PATH" \ --env "FLEX_TEMPLATE_PYTHON_PY_FILE=PYTHON_FILE"
替换以下内容:
-
BUCKET_NAME:用于存储模板规范文件的 Cloud Storage 存储桶的名称 -
TEMPLATE_FILE_NAME:要创建的模板规范文件的名称。示例:my_template.json -
LOCATION:Artifact Registry 代码库的位置 -
PROJECT_ID: Google Cloud 项目 ID -
REPOSITORY:您的 Artifact Registry 代码库的名称 -
IMAGE:Flex 模板容器映像的名称 -
TAG:Flex 模板容器映像的标记 -
<p
BASE_IMAGE: the base image to use. Specify one of the following:-
A predefined label, such as "PYTHON3". For more information, see the documentation
for the
--flex-template-base-imageflag. -
The full
gcr.iopath to a specific container version, in the following format:gcr.io/dataflow-templates-base/IMAGE:TAG.
-
A predefined label, such as "PYTHON3". For more information, see the documentation
for the
-
METADATA_FILE:元数据文件的本地路径。如需了解详情,请参阅模板元数据。 -
PYTHON_FILE_PATH:流水线的 Python 文件及其所有依赖文件的本地路径。您可以采用逗号分隔列表的形式或单独的--py-path标志来指定多个路径。 -
PYTHON_FILE:要运行的 Python 文件。如需了解详情,请参阅环境变量。
Go
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \ --image-gcr-path "LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE:TAG" \ --sdk-language "GO" \ --flex-template-base-image "BASE_IMAGE" \ --metadata-file "METADATA_FILE" \ --go-binary-path="GO_FILE_PATH" \ --env "FLEX_TEMPLATE_GO_BINARY=GO_BINARY"
替换以下内容:
-
BUCKET_NAME:用于存储模板规范文件的 Cloud Storage 存储桶的名称 -
TEMPLATE_FILE_NAME:要创建的模板规范文件的名称。示例:my_template.json -
LOCATION:Artifact Registry 代码库的位置 -
PROJECT_ID: Google Cloud 项目 ID -
REPOSITORY:您的 Artifact Registry 代码库的名称 -
IMAGE:Flex 模板容器映像的名称 -
TAG:Flex 模板容器映像的标记 -
<p
BASE_IMAGE: the base image to use. Specify one of the following:-
A predefined label, such as "GO". For more information, see the documentation
for the
--flex-template-base-imageflag. -
The full
gcr.iopath to a specific container version, in the following format:gcr.io/dataflow-templates-base/IMAGE:TAG.
-
A predefined label, such as "GO". For more information, see the documentation
for the
-
METADATA_FILE:元数据文件的本地路径。如需了解详情,请参阅模板元数据。 -
GO_FILE_PATH:已编译的流水线 Go 二进制文件的本地路径 -
GO_BINARY:要运行的 Go 二进制文件。如需了解详情,请参阅环境变量。
使用自定义映像
如需使用自定义容器映像运行 Flex 模板,请运行以下命令:
Java
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \
--image "CUSTOM_IMAGE" \
--sdk-language "JAVA" \
--metadata-file "METADATA_FILE"
Python
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \
--image "CUSTOM_IMAGE" \
--sdk-language "PYTHON" \
--metadata-file "METADATA_FILE"
Go
gcloud dataflow flex-template build gs://BUCKET_NAME/TEMPLATE_FILE_NAME \
--image "CUSTOM_IMAGE" \
--sdk-language "GO" \
--metadata-file "METADATA_FILE"
替换以下内容:
BUCKET_NAME:用于存储模板规范文件的 Cloud Storage 存储桶的名称。TEMPLATE_FILE_NAME:模板规范文件的名称。示例:my_template.json。CUSTOM_IMAGE:自定义映像的映像注册表位置。METADATA_FILE:元数据文件的本地路径。
Python 的软件包依赖项
如果 Dataflow Python 流水线使用其他依赖项,您可能需要配置 Flex 模板,以便在 Dataflow 工作器虚拟机上安装其他依赖项。
如果在限制互联网访问的环境中运行使用 Flex 模板的 Python Dataflow 作业,则您必须在创建模板时预封装依赖项。
使用以下任一选项预封装 Python 依赖项。
如需了解如何在 Java 和 Go 流水线中管理流水线依赖项,请参阅在 Dataflow 中管理流水线依赖项。
使用需求文件并使用模板预封装依赖项
如果您使用自己的 Dockerfile 来定义 Flex 模板映像,请按以下步骤操作:
创建一个列出流水线依赖项的
requirements.txt文件。COPY requirements.txt /template/ ENV FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE="/template/requirements.txt"在 Flex 模板映像中安装依赖项。
RUN pip install --no-cache-dir -r $FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE将依赖项下载到本地要求缓存中,该缓存会在模板启动时暂存到 Dataflow 工作器。
RUN pip download --no-cache-dir --dest /tmp/dataflow-requirements-cache -r $FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE
使用此方法时,系统会在运行时将 requirements.txt 文件中的依赖项安装到 Dataflow 工作器上。 Google Cloud 控制台“建议”标签页中的分析洞见可能会指出此行为。为避免在运行时安装依赖项,请使用自定义容器映像。
以下是使用Flex 模板中的 requirements 文件的代码示例。
将流水线结构设计为软件包并使用本地软件包
如果您使用多个 Python 本地文件或模块,请将流水线结构化为软件包。文件结构可能如下所示:
main.py
pyproject.toml
setup.py
src/
my_package/
__init__.py
my_custom_dofns_and_transforms.py
my_pipeline_launcher.py
other_utils_and_helpers.py
将顶级入口点(例如
main.py文件)放置在根目录中。将其余文件放在src目录中的单独文件夹中,例如my_package。将软件包配置文件添加到根目录,并提供软件包详情和要求。
pyproject.toml
[project] name = "my_package" version = "package_version" dependencies = [ # Add list of packages (and versions) that my_package depends on. # Example: "apache-beam[gcp]==2.54.0", ]setup.py
"""An optional setuptools configuration stub for the pipeline package. Use pyproject.toml to define the package. Add this file only if you must use the --setup_file pipeline option or the FLEX_TEMPLATE_PYTHON_SETUP_FILE configuration option. """ import setuptools setuptools.setup()如需详细了解如何配置本地软件包,请参阅打包 Python 项目。
为流水线导入本地模块或文件时,请使用
my_package软件包名称作为导入路径。from my_package import word_count_transform在 Flex 模板映像中安装流水线软件包。您的 Flex 模板 Dockerfile 可能包含类似于以下示例的内容:
Dockerfile
ENV FLEX_TEMPLATE_PYTHON_PY_FILE="${WORKDIR}/main.py" ENV FLEX_TEMPLATE_PYTHON_SETUP_FILE="${WORKDIR}/setup.py" # Copy pipeline, packages and requirements. WORKDIR ${WORKDIR} COPY main.py . COPY pyproject.toml . COPY setup.py . COPY src src # Install local package. RUN pip install -e .
使用此方法时,系统会在运行时将 requirements.txt 文件中的依赖项安装到 Dataflow 工作器上。 Google Cloud 控制台“建议”标签页中的分析洞见可能会指出此行为。为避免在运行时安装依赖项,请使用自定义容器映像。
如需查看遵循推荐方法的示例,请参阅 GitHub 中的具有依赖项和自定义容器映像的流水线 Flex 模板教程。
使用预安装所有依赖项的自定义容器
如需避免在运行时安装依赖项,请使用自定义容器。对于在不访问互联网的环境中运行的流水线,首选此选项。
如需使用自定义容器,请按以下步骤操作:
构建一个预安装必要依赖项的自定义容器映像。
在 Flex 模板 Dockerfile 中预安装相同的依赖项。
如需防止在运行时安装依赖项,请勿在 Flex 模板配置中使用
FLEX_TEMPLATE_PYTHON_REQUIREMENTS_FILE或FLEX_TEMPLATE_PYTHON_SETUP_FILE选项。修改后的 Flex 模板
Dockerfile可能如以下示例所示:FROM gcr.io/dataflow-templates-base/python3-template-launcher-base ENV FLEX_TEMPLATE_PYTHON_PY_FILE="/template/main.py" COPY . /template # If you use a requirements file, pre-install the requirements.txt. RUN pip install --no-cache-dir -r /template/requirements.txt # If you supply the pipeline in a package, pre-install the local package and its dependencies. RUN pip install -e /template使用此方法时,您需要执行以下操作:
- 构建 Flex 模板映像
- 构建自定义 SDK 容器映像
- 在两个映像中安装相同的依赖项
或者,为了减少需要维护的映像数量,请将自定义容器映像用作 Flex 模板的基础映像。
如果您使用 Apache Beam SDK 2.49.0 版或更低版本,请在流水线启动器中添加
--sdk_location=container流水线选项。此选项会指示流水线使用自定义容器中的 SDK,而不是下载 SDK。options = PipelineOptions(beam_args, save_main_session=True, streaming=True, sdk_location="container")在
flex-template run命令中设置sdk_container_image参数。例如:gcloud dataflow flex-template run $JOB_NAME \ --region=$REGION \ --template-file-gcs-location=$TEMPLATE_PATH \ --parameters=sdk_container_image=$CUSTOM_CONTAINER_IMAGE \ --additional-experiments=use_runner_v2如需了解详情,请参阅在 Dataflow 中使用自定义容器。
将私有 Docker 注册表与 Flex 模板搭配使用
您可以构建存储在私有 Docker 注册表中的 Flex 模板映像,条件是该私有注册表使用 HTTPS 并且具有有效证书。
如需使用私有注册表中的映像,请指定该映像的路径以及该注册表的用户名和密码。用户名和密码必须存储在 Secret Manager 中。您可以使用以下格式之一提供密文:
projects/{project}/secrets/{secret}/versions/{secret_version}projects/{project}/secrets/{secret}
如果您使用第二种格式,因为它未指定版本,则 Dataflow 会使用最新版本。
如果注册表使用自签名证书,您还需要指定自签名证书的 Cloud Storage 路径。
下表介绍了可用于配置私有注册表的 gcloud CLI 选项。
| 参数 | 说明 |
|---|---|
image
|
注册表的地址。例如:gcp.repository.example.com:9082/registry/example/image:latest。 |
image-repository-username-secret-id
|
用于向私有注册表进行身份验证的用户名的 Secret Manager 密文 ID。例如:projects/example-project/secrets/username-secret。 |
image-repository-password-secret-id
|
用于向私有注册表进行身份验证的密码的 Secret Manager 密文 ID。例如:projects/example-project/secrets/password-secret/versions/latest。 |
image-repository-cert-path
|
私有注册表的自签名证书的完整 Cloud Storage 网址。仅当注册表使用自签名证书时,才需要填写此值。例如:gs://example-bucket/self-signed.crt。 |
下面是一个示例 Google Cloud CLI 命令,该命令使用具有自签名证书的私有注册表中的映像构建 Flex 模板。
gcloud dataflow flex-template build gs://example-bucket/custom-pipeline-private-repo.json --sdk-language=JAVA --image="gcp.repository.example.com:9082/registry/example/image:latest" --image-repository-username-secret-id="projects/example-project/secrets/username-secret" --image-repository-password-secret-id="projects/example-project/secrets/password-secret/versions/latest" --image-repository-cert-path="gs://example-bucket/self-signed.crt" --metadata-file=metadata.json
如需构建您自己的 Flex 模板,您需要替换示例值,并且可能需要指定不同的选项或额外指定一些选项。
后续步骤
- 了解如何运行 Flex 模板。
- 构建和运行示例 Flex 模板。
- 如需详细了解经典模板和 Flex 模板及其用例场景,请参阅 Dataflow 模板。
- 如需了解 Flex 模板问题排查相关的信息,请参阅排查 Flex 模板超时问题。
- 如需查看更多参考架构、图表和最佳实践,请浏览云架构中心。