概要

Apache Beam Prism Runnerは、Beam Portabilityを使用して、ローカルでBeamパイプラインを実行するために使用できます。

Prismランナーは、小規模なローカルテストに適しており、以下を提供します。

Goで記述されており、Go SDKのデフォルトランナーですが、他のSDKでも使用できます(下記参照)。

機能

Prismはすでに多くのBeam機能をサポートしていますが、まだすべてをサポートしているわけではありません。これらのギャップを埋めるために、Prismは積極的に開発されています。

タイマーの問題を除いて、サポートされていない機能の使用は、ジョブ提出時にパイプラインを失敗させる必要があります。

2.59.0リリースでは、Prismは、以下の機能を使用するパイプラインを除いて、ほとんどのランナー検証テストに合格しています。

OrderedListState、OnWindowExpiry(例:GroupIntoBatches)、CustomWindows、MergingWindowFns、TriggerおよびWindowingStrategy関連機能、Bundle Finalization、Looping Timers、およびPythonコンバイナパッキング、Javaスキーマトランスフォーム、およびヘテロジニアスフラットンコーダーなどの一部のコーダー関連の問題。処理時間タイマーはまだリアルタイムサポートがありません。

現在の進捗状況については、ロードマップを参照してください。具体的な機能サポート情報は、まもなくRunner機能マトリックスに移行されます。

Prism Runnerの使用

PrismはGo SDKのデフォルトランナーであり、自動的に使用されます。フラグ--runner=PrismRunnerでランナーを設定します。 ランナーをPrismRunnerに設定します。 ランナーをPrismRunnerに設定します。

他のSDKの場合、PrismはBeam Github Releasesにアセットとして含まれており、ダウンロードしてスタンドアロンで使用できます。

パイプラインのテスト方法に関する情報を含むいくつかのリソースを以下に示します。

依存関係の指定

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>

このセクションは、Python用Beam SDKには適用されません。Prismは組み込まれています。 このセクションは、Go用Beam SDKには適用されません。Prismは組み込まれています。

Go SDKを除き、PrismはBeam Github Releasesにアセットとして含まれており、SDKで自動ダウンロード、起動、シャットダウンが行われます。バイナリは、後続の実行のためにローカルにキャッシュされます。

Prism Runnerのパイプラインオプション

Prismは、必要な構成を最小限にすることを目指しており、現在、ユーザーパイプラインオプションを提供していません。

Prismスタンドアロンの実行

Prismはスタンドアロンバイナリとして実行でき、ジョブとジョブの状態を一覧表示するための基本的なUIを表示します。これは、デモや迅速な反復処理に役立つPrismのオプションモードであり、JavaまたはPython SDKでPrismを使用するための要件ではありません。

これは、Githubリリースからアセットをダウンロードするか、Goをインストールしてローカルでバイナリをビルドするかの2つの方法で行うことができます。

どちらの場合も、PrismはJobManagement APIエンドポイントとWebページUIをローカルで提供します。ジョブは`--runner=PortableRunner --endpoint=<エンドポイントアドレス>`を使用して送信し、WebページUIを使用して監視できます。

Prismバイナリからの出力例

2024/09/30 09:56:42 INFO Serving JobManagement endpoint=localhost:8073
2024/09/30 09:56:42 INFO Serving WebUI endpoint=http://localhost: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