Cloud Spanner エミュレータで Dataflow パイプラインをテスト
Google Cloud Japan Team
※この投稿は米国時間 2021 年 5 月 24 日に、Google Cloud blog に投稿されたものの抄訳です。
Cloud SDK には、GCP プロジェクトや請求先アカウントを作成しなくてもアプリケーションの開発やテストに無料で使用できる、ローカル インメモリ Cloud Spanner エミュレータが備わっています。このエミュレータは Cloud Spanner の本番環境サービスと同じ API を提供し、本番環境へのデプロイではなく、ローカルでの開発とテストを目的として作られています。
このたび、Cloud Spanner エミュレータによるデータベースの Dataflow インポートとエクスポートがサポートされるようになりました。
Cloud Spanner で動作するよう構成された既存の Dataflow パイプラインをこのエミュレータでテストできるので、実際の Spanner バックエンドに接続しなくても既存のパイプラインをオフラインで簡単にテストできます。
以下のガイドでは、このエミュレータで Dataflow のインポートおよびエクスポートのパイプラインをテストする方法についてご説明します。使用するサンプル プログラムは、こちらのページ(https://github.com/cloudspannerecosystem/emulator-samples/tree/master/dataflow)に掲載されています。
テスト パイプラインを開始するには、パイプライン内でエミュレータ エンドポイントを構成します。使用するホストは、エミュレータによって公開される gRPC エンドポイントである必要があります(デフォルトでは http://localhost:9010)。
Java クライアント ライブラリの Spanner オプションは、エミュレータのホストを使用するよう次のように設定する必要があります。
- ビームの Spanner 構成も、エミュレータのホストを使用するよう次のように設定する必要があります。
サンプル プログラム「SpannerEmulatorPopulator」が、Apache Beam ライブラリを使用して Dataflow パイプラインを作成します。このプログラムはインポートとエクスポート両方の実際の動作を示します。どちらを行うかはコマンドラインの引数で切り替えられます。
runExport=<true/false>
runImport=<true/false>
サンプルを実行するには、まず gcloud を構成します。
次に、エミュレータを起動します。ここでは、9010(デフォルトのポート)を使用します。
必要に応じて「-log_requests」でリクエスト ロギングを有効にすることができます。ポートは「-grpc_port=<port>」で変更可能です。
エミュレータが起動したら、使用するインスタンスを作成する必要があります。
これで、次のようなコマンドでサンプル プログラムを実行できるようになりました。
このエミュレータはローカルでのみ実行されるため、ランナーは「DirectRunner」に設定する必要があります。
データは次のようなコードで CSV ファイルから読み込むことができます。
CSV ファイルからデータを読み取ったら、データベースに行を追加するミューテーションのリストを作成します。
これで、gcloud を使用してデータベースにデータが正しく入力されたかを確認できるようになりました。
このエミュレータは、Cloud Spanner Dataflow パイプラインをオフラインですぐにテストするために使用できます。前述のサンプルは、基本的なパイプラインをエミュレータで設定する方法を示すものです。
Cloud Spanner エミュレータは、クライアント ライブラリのすべての言語をサポートしています。また、gcloud コマンドライン ツールや REST API でも使用できます。GitHub でオープンソース プロジェクトとしてご利用いただくことも可能です。
-Cloud Spanner 担当ソフトウェア エンジニア Jim King



