概述

Apache Beam 棱镜运行器可用于使用 Beam 可移植性 在本地执行 Beam 管道。

棱镜运行器适用于小规模的本地测试,并提供

使用 Go 编写,它是 Go SDK 的默认运行器,但也可以在其他 SDK 中使用(见下文)。

功能

虽然棱镜已经支持大量 Beam 功能,但它尚未支持所有功能。棱镜正在积极开发中,以弥补这些差距。

除了计时器问题之外,使用不支持的功能应该在作业提交时使管道失败。

2.59.0 版本 中,棱镜通过了大多数运行器验证测试,但以下功能的管道的例外情况除外

OrderedListState、OnWindowExpiry(例如 GroupIntoBatches)、CustomWindows、MergingWindowFns、与触发器和窗口策略相关的功能、捆绑终结、循环计时器以及一些与编码器相关的問題,例如 Python 组合器打包、Java Schema 转换和异构扁平化编码器。处理时间计时器目前还没有实时支持。

请参阅 路线图,了解如何找到当前进展情况。特定功能支持信息将很快迁移到 运行器能力矩阵

使用棱镜运行器

棱镜是 Go SDK 的默认运行器,会自动使用。使用标志 --runner=PrismRunner 设置运行器。 将运行器设置为 PrismRunner 将运行器设置为 PrismRunner

对于其他 SDK,棱镜包含在 Beam Github 版本 上,供下载和独立使用。

以下是一些有关如何测试管道的资源。

指定您的依赖项

使用 Java 时,您必须在 pom.xml 中指定您对直接运行器的依赖项。

<dependency>
   <groupId>org.apache.beam</groupId>
   <artifactId>beam-runners-prism-java</artifactId>
   <version>2.60.0</version>
   <scope>runtime</scope>
</dependency>

本节不适用于 Beam SDK for Python。棱镜是内置的。 本节不适用于 Beam SDK for Go。棱镜是内置的。

除了 Go SDK 之外,棱镜包含在 Beam Github 版本 上,用于在 SDK 上自动下载、启动和关闭。二进制文件缓存在本地,供后续执行使用。

棱镜运行器的管道选项

棱镜旨在将所需的配置降至最低,并且目前不提供用户管道选项。

运行独立的棱镜

棱镜可以作为独立的二进制文件执行,并将提供一个基本的 UI 用于列出作业和作业状态。这是一种可选的棱镜模式,对演示或快速迭代很有用。这不是在 Java 或 Python SDK 中使用棱镜的要求。

这可以通过两种方式完成:从 github 版本下载资产,或使用已安装的 Go 在本地构建二进制文件。

在这两种情况下,棱镜都会在本地提供一个 JobManagement API 端点和一个网页 UI。可以使用 --runner=PortableRunner --endpoint=<端点地址> 提交作业,并使用网页 UI 进行监控。

棱镜二进制文件的示例输出

2024/09/30 09:56:42 INFO Serving JobManagement endpoint=localhost:8073
2024/09/30 09:56:42 INFO Serving WebUI endpoint=https://127.0.0.1:8074

二进制文件具有以下可选标志

下载发布资产

这种方法不需要安装其他依赖项或运行时。如果您想在其他机器上部署棱镜,建议您使用这种方法。

导航到最新的 Beam 版本 Github 页面,滚动到底部,下载您要运行棱镜的位置的正确资产。

例如,如果您想在较新的 MacBook 上执行棱镜,则应下载 darwin-arm64 资产。对于在许多云机器上执行,则应下载 linux-amd64 资产。

这需要下载适合棱镜将要运行的机器(例如您的开发机器)的正确资产。

只需解压缩并执行。

使用 Go 从发布版本构建。

这种方法需要 安装最新版本的 Go。如果您只想在本地机器上运行棱镜,建议您使用这种方法。

您可以使用 go install 安装棱镜

go install github.com/apache/beam/sdks/v2/go/cmd/prism@latest
prism

或者只需使用 go run 立即构建并执行二进制文件

go run github.com/apache/beam/sdks/v2/go/cmd/prism@latest