CubicLouve

Spring_MTの技術ブログ

Java SDKでApache Beam(Dataflow)でGradleを使うサンプル

Java SDKを使ったApache Beamのパイプライン構築については公式ドキュメントなどを見るとMavenを使うことが多いのですが、Gradleを使った例が見当たらなかったので作ってみました。

github.com

個人的な感想なのですが、Mavenだと依存関係をpomで定義書くのが辛かったのですが、Gradleのほうが素直に書けてそこだけでもGradleを使うメリットはあるかなあと思っています。

Gradle経由でDataflowにdeployする定義も作っています。

apache-beam-gradle-sample/build.gradle at main · SpringMT/apache-beam-gradle-sample · GitHub

サンプルプロジェクト構成について

pipeline

apache-beam-gradle-sample/src/main/java/sample/pipeline at main · SpringMT/apache-beam-gradle-sample · GitHub

パイプラインの構築だけに責務があります。

pipelineの中には具体的な処理内容は書かず、エントリーポイントと処理を担当するクラス(ステージ)を定義するだけにしています。

transform

apache-beam-gradle-sample/src/main/java/sample/transform at main · SpringMT/apache-beam-gradle-sample · GitHub

PTransform を使い、具体的な処理内容を書きます。

ステージに相当する部分となります。

単一責任の原則に則り1クラス1処理とし、できる限り単体テストを書くようにします。

ステージを跨ぐ場合は、 PCollection を使ってデータを受け渡しを行います。

application

apache-beam-gradle-sample/src/main/java/sample/application at main · SpringMT/apache-beam-gradle-sample · GitHub

アプリケーションロジックなどをここにまとめます。

ステージを跨ぐデータのクラスを置いたりしています。

参考

qiita.com