Java向けWordCountクイックスタート
このクイックスタートでは、Java開発環境の設定方法と、サンプルパイプライン(Apache Beam Java SDKで記述)を任意のランナーを使用して実行する方法を示します。
Apache Beam Javaコードベースへのコントリビュートにご関心がある場合は、コントリビューションガイドを参照してください。
このページの内容
開発環境の設定
- Java Development Kit (JDK) バージョン8、11、または17をダウンロードしてインストールします。JAVA_HOME環境変数が設定されており、JDKのインストール先を指していることを確認します。
- Apache Mavenをダウンロードしてインストールします。お使いのオペレーティングシステムのインストールガイドに従ってください。
- オプション: MavenプロジェクトをGradleに変換する場合は、Gradleをインストールします。
サンプルコードの取得
最新のBeamリリースに対してビルドされるMavenサンプルプロジェクトを生成します。
Mavenは**word-count-beam**ディレクトリに新しいプロジェクトを作成します。
**word-count-beam**ディレクトリに移動します。
このディレクトリには、**pom.xml**と、サンプルパイプラインを含む**src**ディレクトリが含まれています。サンプルパイプラインをリストします。
次のサンプルが表示されます。- DebuggingWordCount.java (GitHub)
- MinimalWordCount.java (GitHub)
- WindowedWordCount.java (GitHub)
- WordCount.java (GitHub)
このチュートリアルで使用されているサンプルである**WordCount.java**は、入力ファイル(デフォルトではシェイクスピアの「リア王」を含む**.txt**ファイル)から単語をカウントするBeamパイプラインを定義しています。サンプルの詳細については、WordCountサンプルの解説を参照してください。
オプション: MavenからGradleへの変換
以下の手順では、次のランナーについて、MavenからGradleへのビルド変換方法を説明します。
- Directランナー
- Dataflowランナー
他のランナーの変換プロセスは同様です。詳細については、Apache Mavenからのビルドの移行を参照してください。
- **pom.xml**ファイルがあるディレクトリで、自動化されたMavenからGradleへの変換を実行します。Gradleビルドを生成するかどうかを尋ねられます。「yes」と入力します。DSL(GroovyまたはKotlin)を選択するように求められます。このチュートリアルでは、Kotlinを選択して「2」と入力します。
- 生成された**build.gradle.kts**ファイルを開き、次の変更を加えます。
repositories
で、mavenLocal()
をmavenCentral()
に置き換えます。repositories
で、Confluent Kafka依存関係のリポジトリを宣言します。- ビルドスクリプトの最後に、次の条件付き依存関係を追加します。
- ビルドスクリプトの最後に、次のタスクを追加します。
- プロジェクトをビルドします。
サンプルテキストの取得
DataflowRunnerを使用する予定の場合は、この手順をスキップできます。ランナーはGoogle Cloud Storageから直接テキストを取得します。
- **word-count-beam**ディレクトリに、**sample.txt**というファイルを作成します。
- ファイルにテキストを追加します。この例では、シェイクスピアのリア王のテキストを使用します。
パイプラインの実行
単一のBeamパイプラインは、複数のBeam ランナーで実行できます。DirectRunnerは、マシン上で実行され、特別な設定を必要としないため、はじめに便利です。Beamを試していて、何をすべきか分からない場合は、DirectRunnerを使用してください。
パイプラインを実行する一般的なプロセスは以下のとおりです。
- ランナー固有の設定を完了します。
- コマンドラインを構築します。
--runner=<runner>
を使用してランナーを指定します(デフォルトはDirectRunner)。- ランナー固有の必要なオプションを追加します。
- ランナーからアクセスできる入力ファイルと出力場所を選択します。(たとえば、外部クラスタでパイプラインを実行している場合、ローカルファイルにはアクセスできません。)
- コマンドを実行します。
WordCountパイプラインを実行するには
ランナーの設定手順に従います。
DirectRunnerは追加の設定なしで動作します。
下記の対応するMavenまたはGradleコマンドを実行します。
Mavenを使用したWordCountの実行
Unixシェル用
mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--runner=DataflowRunner --project=<your-gcp-project> \
--region=<your-gcp-region> \
--gcpTempLocation=gs://<your-gcs-bucket>/tmp \
--inputFile=gs://apache-beam-samples/shakespeare/* --output=gs://<your-gcs-bucket>/counts" \
-Pdataflow-runner
Windows PowerShell用
mvn compile exec:java -D exec.mainClass=org.apache.beam.examples.WordCount `
-D exec.args="--runner=DataflowRunner --project=<your-gcp-project> `
--region=<your-gcp-region> \
--gcpTempLocation=gs://<your-gcs-bucket>/tmp `
--inputFile=gs://apache-beam-samples/shakespeare/* --output=gs://<your-gcs-bucket>/counts" `
-P dataflow-runner
Gradleを使用したWordCountの実行
Unixシェル用
結果の確認
パイプラインが完了したら、出力を確認できます。count
というプレフィックスが付いた出力ファイルが複数ある場合があります。出力ファイルの数はランナーによって決定され、効率的な分散実行を行う柔軟性が与えられます。
- Unixシェルで出力ファイルを表示します。出力ファイルには、一意の単語とその出現回数が入っています。
- Unixシェルで出力内容を表示します。要素の順序は、ランナーが効率性を最適化できるように保証されていません。しかし、出力は次のようになります。
... Think: 3 slower: 1 Having: 1 revives: 1 these: 33 wipe: 1 arrives: 1 concluded: 1 begins: 3 ...
次のステップ
- Java用Beam SDKの詳細を学び、Java SDK APIリファレンスを参照してください。
- WordCountサンプルの解説でWordCountサンプルを詳しく見てみましょう。
- 自己ペースで学習リソースを見てみましょう。
- お気に入りのビデオとポッドキャストをいくつか見てみましょう。
- Beamのusers@メーリングリストに参加しましょう。
問題が発生した場合は、お気軽にお問い合わせください!
最終更新日: 2024/10/31
探していたものが見つかりましたか?
すべて役に立ち、分かりやすかったですか?変更したいことはありますか?お知らせください!