ラボの設定手順と要件
アカウントと進行状況を保護します。このラボを実行するには、常にシークレット ブラウジング ウィンドウとラボの認証情報を使用してください。

Dataflow を使用して Spanner との間でデータを移行する

ラボ 1時間 universal_currency_alt クレジット: 1 show_chart 入門
info このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
このコンテンツはまだモバイル デバイス向けに最適化されていません。
快適にご利用いただくには、メールで送信されたリンクを使用して、デスクトップ パソコンでアクセスしてください。

SCBL008

概要

このラボでは、Dataflow と Apache Beam を使用して、Spanner にデータを移行します。

目標

このラボでは、次の方法について学びます。

  • Apache Beam を使用して ETL パイプラインを作成する。
  • Google Cloud Dataflow を使用して Apache Beam パイプラインを実行する。

設定と要件

[ラボを開始] ボタンをクリックする前に

こちらの説明をお読みください。ラボには時間制限があり、一時停止することはできません。タイマーは Google Cloud のリソースを利用できる時間を示しており、[ラボを開始] をクリックするとスタートします。

このハンズオンラボでは、シミュレーションやデモ環境ではなく実際のクラウド環境を使って、ご自身でラボのアクティビティを行います。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。

このラボを完了するためには、以下が必要です。

  • 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
  • ラボを完了するための時間(開始後は一時停止できません)
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントに追加料金が発生する可能性があります。

Google Cloud Shell の有効化

Google Cloud Shell は、デベロッパー ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Google Cloud Shell では、コマンドラインで GCP リソースにアクセスできます。

GCP Console の右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

Cloud Shell アイコン

[続行] をクリックします。

cloudshell_continue

環境のプロビジョニングと接続には少し時間がかかります。接続すると、すでに認証されており、プロジェクトは PROJECT_ID に設定されています。例えば:

Cloud Shell 端末

gcloud は Google Cloud Platform のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。

次のコマンドを使用すると、有効なアカウント名を一覧表示できます。

gcloud auth list

出力:

ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
    $ gcloud config set account `ACCOUNT`
	

次のコマンドを使用すると、プロジェクト ID を一覧表示できます。

gcloud config list project
	

出力:

[core]
project = <project_ID>
	

出力例:

[core]
project = qwiklabs-gcp-44776a13dea667a6
	

タスク 1. Spanner にデータをインポートするための Apache Beam パイプラインを作成する

  1. Google Cloud コンソールのタイトルバーで、[Cloud Shell をアクティブにする](Cloud Shell アイコン)をクリックします。プロンプトが表示されたら、[続行] をクリックします。

  2. 次のコマンドを実行して、プロジェクト ID を設定します。

gcloud config set project {{{project_0.project_id|placeholder_project_id}}}
  1. 次のコマンドを実行して、このラボに必要なファイルをダウンロードします。
git clone https://github.com/GoogleCloudPlatform/training-data-analyst cd training-data-analyst/courses/understanding_spanner/dataflow
  1. 次のスクリプトを実行して、Spanner データベースを作成します。
bash ./create-spanner-pets-database.sh {{{project_0.default_region|placeholder_region}}}
  1. 次のコマンドを実行してスキーマを確認します。このラボでは、テーブルは 1 つだけであり、PetID フィールドと OwnerID フィールドはどちらも文字列ではなく整数です。
cat pets-db-schema.sql
  1. 次のコマンドを実行して、インポートしたデータを確認します。主キーと外部キーがカウンタを使用していることに注目してください。コースの前半で学んだように、これは Spanner を使用する際のアンチパターンです。
    これを解決するには、Apache Beam で作成された Dataflow パイプラインを使用して、Spanner にデータをインポートする前に整数のビットを反転させます。
    これにより、関係を維持しながら整数の問題を解決できます。
cat pets.csv
  1. [エディタを開く] ボタンをクリックして、training-data-analyst/courses/understanding_spanner/dataflow/csv-to-spanner.py コードファイルを開きます。パイプラインが main 関数(53~68 行目)で作成されていることに注目してください。

    パイプラインは CSV ファイルからデータを読み取り、PetID フィールドと OwnerID フィールドのビットを反転してから、Spanner にデータを書き込みます。
    reverse_bits 関数は 21 行目から始まります。
  2. ターミナルに戻ります。このパイプラインを実行してみましょう。まず、次のコマンドで Python の前提条件をインストールする必要があります。

pip install apache-beam[gcp]==2.42.0 pip install apache-beam[dataframe]
  1. パイプラインを実行します(このコードは、Cloud Shell でパイプラインをローカルで実行します。Dataflow に移動する必要はありません)。
python csv-to-spanner.py
  1. パイプラインが完了したら、次のクエリを実行して結果を確認します。
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT * FROM Pets'
  1. 次のコマンドを実行して、追加したデータを削除します。
gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='DELETE FROM Pets WHERE True'
  1. 次に、Dataflow サービスを使用してコードを実行します。

タスク 2. Dataflow ジョブを実行する

  1. Dataflow を使用してジョブを実行するには、入力、ステージング、出力用の Cloud Storage バケットが必要です。次のコマンドを使用して、プロジェクト ID を含むバケットを作成します(これにより、バケットの名前が一意になります)。また、pets.csv ファイルをバケットにコピーします。これらのコマンドは、同時に実行するのではなく、個別に実行します。
gsutil mb -l {{{project_0.default_region|place_holder_text}}} gs://$DEVSHELL_PROJECT_ID-data-flow gsutil cp ./pets.csv gs://$DEVSHELL_PROJECT_ID-data-flow
  1. コンソールで Cloud Storage に移動し、バケットが作成され、ファイルがコピーされたことを確認します。

  2. 次のコマンドを実行して、プロジェクトで Dataflow API がスムーズに有効化されるようにします。

gcloud services disable dataflow.googleapis.com gcloud services enable dataflow.googleapis.com
  1. 次のコマンドで、Dataflow を使用してパイプラインを実行します。
python csv-to-spanner.py \ --region {{{project_0.default_region|place_holder_text}}} \ --worker_machine_type e2-standard-2 \ --input gs://$DEVSHELL_PROJECT_ID-data-flow/pets.csv \ --output gs://$DEVSHELL_PROJECT_ID-data-flow/results/outputs \ --runner DataflowRunner \ --project $DEVSHELL_PROJECT_ID \ --temp_location gs://$DEVSHELL_PROJECT_ID-data-flow/tmp/
  1. ナビゲーション メニューを使用して、Dataflow ジョブに移動します。ジョブが表示されるまで少し時間がかかることがあります。[更新] ボタンをクリックしてジョブが表示されるのを確認します。ジョブをクリックすると、ジョブの詳細が表示されます。Dataflow サービスでジョブを実行するには数分かかることがあります。これは、ジョブを送信するクラスタ、または 1 つ以上の VM が作成されるためです。

  2. 先ほどと同じように、Spanner データベースにデータが追加されたことを確認します。次のクエリを実行して、読み込まれたデータを表示します。

gcloud spanner databases execute-sql pets-db --instance=test-spanner-instance --sql='SELECT * FROM Pets'
  1. Spanner インスタンスを削除して、課金されないようにします。

これで完了です。Dataflow と Apache Beam を使用して、Spanner にデータを移行しました。

ラボを終了する

ラボでの学習が完了したら、[ラボを終了] をクリックします。ラボで使用したリソースが Qwiklabs から削除され、アカウントの情報も消去されます。

ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。

星の数は、それぞれ次の評価を表します。

  • 星 1 つ = 非常に不満
  • 星 2 つ = 不満
  • 星 3 つ = どちらともいえない
  • 星 4 つ = 満足
  • 星 5 つ = 非常に満足

フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。

フィードバック、ご提案、修正事項がございましたら、[サポート] タブからお知らせください。

Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。

始める前に

  1. ラボでは、Google Cloud プロジェクトとリソースを一定の時間利用します
  2. ラボには時間制限があり、一時停止機能はありません。ラボを終了した場合は、最初からやり直す必要があります。
  3. 画面左上の [ラボを開始] をクリックして開始します

シークレット ブラウジングを使用する

  1. ラボで使用するユーザー名パスワードをコピーします
  2. プライベート モードで [コンソールを開く] をクリックします

コンソールにログインする

    ラボの認証情報を使用して
  1. ログインします。他の認証情報を使用すると、エラーが発生したり、料金が発生したりする可能性があります。
  2. 利用規約に同意し、再設定用のリソースページをスキップします
  3. ラボを終了する場合や最初からやり直す場合を除き、[ラボを終了] はクリックしないでください。クリックすると、作業内容がクリアされ、プロジェクトが削除されます

このコンテンツは現在ご利用いただけません

利用可能になりましたら、メールでお知らせいたします

ありがとうございます。

利用可能になりましたら、メールでご連絡いたします

1 回に 1 つのラボ

既存のラボをすべて終了して、このラボを開始することを確認してください

シークレット ブラウジングを使用してラボを実行する

このラボを実行するには、シークレット モードまたはシークレット ブラウジング ウィンドウを使用することをおすすめします。これにより、個人アカウントと受講者アカウントの競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。