概述

Apache Beam Prism Runner 可用於使用 Beam 可攜性 在本機執行 Beam Pipeline。

Prism 執行器適用於小規模本機測試,並提供:

Go 撰寫,它是 Go SDK 的預設執行器,但也可以在其他 SDK 中使用(請參閱下文)。

功能

雖然 Prism 已經支援大量的 Beam 功能,但它還沒有支援所有功能。Prism 正在積極開發中,以彌補這些差距。

除了計時器問題外,使用不支援的功能應在工作提交時使 Pipeline 失敗。

2.59.0 版本中,Prism 通過了大多數執行器驗證測試,但使用以下功能的 Pipeline 除外:

OrderedListState、OnWindowExpiry(例如 GroupIntoBatches)、CustomWindows、MergingWindowFns、與 Trigger 和 WindowingStrategy 相關的功能、Bundle Finalization、Lopping Timers,以及一些與 Coder 相關的問題,例如使用 Python combiner 封裝、Java Schema 轉換和異質扁平化 Coder。處理時間計時器尚未提供即時支援。

請參閱路線圖,了解如何查找目前的進度。具體的功能支援資訊將很快遷移到執行器功能矩陣

使用 Prism Runner

Prism 是 Go SDK 的預設執行器,會自動使用。使用標誌 --runner=PrismRunner 設定執行器。 將執行器設定為 PrismRunner 將執行器設定為 PrismRunner

對於其他 SDK,Prism 作為 Beam Github Releases 上的資源提供下載和獨立使用。

以下是一些資源,其中包含有關如何測試您的 Pipeline 的資訊。

指定您的依賴關係

使用 Java 時,您必須在您的 pom.xml 中指定您對 Direct Runner 的依賴關係。

<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。Prism 已內建。 本節不適用於 Beam SDK for Go。Prism 已內建。

除了 Go SDK 之外,Prism 作為 Beam Github Releases 上的資源提供,用於在 SDK 上自動下載、啟動和關閉。該二進制檔案會在本機快取,以供後續執行。

Prism Runner 的 Pipeline 選項

Prism 的目標是盡量減少所需的設定,並且目前不提供使用者 Pipeline 選項。

執行獨立的 Prism

Prism 可以作為獨立的二進制檔案執行,並會提供一個基本 UI,用於列出工作和工作狀態。這是 Prism 的一個可選模式,對於演示或快速迭代很有用。它不是在 Java 或 Python SDK 中使用 Prism 的必要條件。

這可以透過兩種方式完成,從 github 發佈版本下載資源,或使用已安裝的 Go 在本機建置二進制檔案。

無論哪種方式,Prism 都會在本地提供 JobManagement API 端點和網頁 UI。可以使用 --runner=PortableRunner --endpoint=<端點位址> 提交工作,並使用網頁 UI 監控工作。

Prism 二進制檔案的範例輸出

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

該二進制檔案具有以下可選標誌:

下載發佈的資源

此方法不需要安裝其他依賴關係或執行時環境。如果您想要在其他機器上部署 Prism,建議使用此方法。

導覽至最新的 Beam 發佈 Github 頁面,捲動到底部,並下載您想要執行 Prism 的正確資源。

例如,如果您想要在較新的 MacBook 上執行 Prism,您會下載 darwin-arm64 資源。對於在許多雲端機器上執行,您會下載 linux-amd64 資源。

這需要為 Prism 將在其上執行的機器下載正確的資源,例如您的開發機器。

只需解壓縮並執行即可。

使用 Go 從發佈版本建置。

此方法需要安裝最新版本的 Go。如果您只想在本機執行 Prism,建議使用此方法。

您可以使用 go install 安裝 Prism

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