Java と Apache Maven を使用したクイックスタート

このページでは、Google Cloud プロジェクトの設定方法、Apache Beam SDK を使用して Maven プロジェクトを作成する方法、Dataflow サービス上でのサンプル パイプラインの実行方法について説明します。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Cloud Console のプロジェクト セレクタページで、Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタのページに移動

  3. Google Cloud プロジェクトに対して課金が有効になっていることを確認します。プロジェクトに対して課金が有効になっていることを確認する方法を学習する

  4. Cloud Dataflow、Compute Engine、Stackdriver Logging、Cloud Storage、 Cloud Storage JSON、BigQuery、Cloud Pub/Sub、Cloud Resource Manager API を有効にします。

    API を有効にする

  5. 認証の設定:
    1. Cloud Console で、[サービス アカウント キーの作成] ページに移動します。

      [サービス アカウント キーの作成] ページに移動
    2. [サービス アカウント] リストから [新しいサービス アカウント] を選択します。
    3. [サービス アカウント名] フィールドに名前を入力します。
    4. [ロール] リストで、[プロジェクト] > [オーナー] を選択します。

      : [ロール] フィールドの設定により、リソースにアクセスするサービス アカウントが承認されます。このフィールドは、Cloud Console を使用して後から表示および変更できます。本番環境アプリケーションを開発している場合は、[プロジェクト > オーナー] よりも詳細な権限を指定します。詳しくは、サービス アカウントへのロールの付与をご覧ください。
    5. [作成] をクリックします。キーが含まれている JSON ファイルがパソコンにダウンロードされます。
  6. 環境変数 GOOGLE_APPLICATION_CREDENTIALS を、サービス アカウント キーが含まれる JSON ファイルのパスに設定します。 この変数は現在のシェル セッションにのみ適用されるため、新しいセッションを開く場合は、変数を再度設定します。

  7. Cloud Storage バケットを作成します。
    1. Cloud Console で、[Cloud Storage ブラウザ] ページに移動します。

      Cloud Storage ブラウザページに移動

    2. [バケットを作成] をクリックします。
    3. [バケットの作成] ダイアログ内で、以下の属性を指定します。
      • 名前: 一意のバケット名。バケットの名前空間はグローバルであり、一般公開されるため、バケット名に機密情報を含めないでください。
      • デフォルトのストレージ クラス: Standard
      • バケットデータが保存されるロケーション
    4. [作成] をクリックします。
  8. Java Development Kit(JDK)バージョン 8 以降をダウンロードしてインストールします。JAVA_HOME 環境変数が設定され、ご使用の JDK インストールをポイントしていることを確認します。
  9. ご使用のオペレーティング システムに対応した Maven のインストール ガイドに沿って、Apache Maven をダウンロードし、インストールします。

WordCount コードを取得する

Apache Beam SDK は、データ パイプライン用のオープンソースのプログラミング モデルです。Apache Beam プログラムでこのようなパイプラインを定義し、パイプラインを実行する Dataflow などのランナーを選択できます。

Maven Archetype Plugin を使用して、Apache Beam SDK の WordCount のサンプルを含む Maven プロジェクトを作成します。以下のように、シェルまたはターミナルで mvn archetype:generate コマンドを実行します。

$ mvn archetype:generate \
      -DarchetypeGroupId=org.apache.beam \
      -DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
      -DarchetypeVersion=2.20.0 \
      -DgroupId=org.example \
      -DartifactId=word-count-beam \
      -Dversion="0.1" \
      -Dpackage=org.apache.beam.examples \
      -DinteractiveMode=false

コマンドを実行すると、現在のディレクトリの下に word-count-beam という新しいディレクトリが表示されます。word-count-beam には、pom.xml という簡単な内容のファイルと、テキスト ファイル内の単語数をカウントする一連のサンプル パイプラインが含まれています。

$ cd word-count-beam/

$ ls
pom.xml	src

$ ls src/main/java/org/apache/beam/examples/
DebuggingWordCount.java	WindowedWordCount.java	common
MinimalWordCount.java	WordCount.java

このサンプルで使用されている Apache Beam のコンセプトの詳細については、WordCount サンプルのチュートリアルをご覧ください。次の例では、WordCount.java を実行します。

WordCount をローカルで実行する

WordCount をローカルで実行する場合は、word-count-beam ディレクトリで次のコマンドを実行します。

$ mvn compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--output=./output/"

Dataflow サービスで WordCount を実行する

Dataflow サービスで WordCount をビルドして実行します。

  • --project 引数に、作成した Google Cloud プロジェクトのプロジェクト ID を指定します。
  • --stagingLocation 引数と --output 引数に、パスの一部として作成した Cloud Storage バケットの名前を指定します。

$ mvn -Pdataflow-runner compile exec:java \
      -Dexec.mainClass=org.apache.beam.examples.WordCount \
      -Dexec.args="--project=<PROJECT_ID> \
      --stagingLocation=gs://<STORAGE_BUCKET>/staging/ \
      --output=gs://<STORAGE_BUCKET>/output \
      --runner=DataflowRunner"

結果を表示する

  1. Dataflow ウェブ UI を開きます。
    Dataflow ウェブ UI に移動

    まず、ステータスが [実行中] の wordcount ジョブを確認し、次に [完了] のジョブを確認します。

    Cloud Dataflow ジョブ
  2. Google Cloud Console で Cloud Storage ブラウザを開きます。
    Cloud Storage ブラウザに移動

    バケットに、ジョブによって作成された出力ファイルとステージング ファイルが表示されます。

    Cloud Storage バケット

クリーンアップ

このクイックスタートで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を行います。

  1. Cloud Console で、[Cloud Storage ブラウザ] ページに移動します。

    Cloud Storage ブラウザページに移動

  2. 削除するバケットのチェックボックスをクリックします。
  3. [削除] をクリックして、バケットを削除します。

次のステップ