Dataproc Serverless for Spark を使用して BigQuery にデータを読み込む
ラボ
45分
universal_currency_alt
クレジット: 5
show_chart
入門
info
このラボでは、学習をサポートする AI ツールが組み込まれている場合があります。
概要
Dataproc Serverless は、インフラストラクチャの管理やワークロードの手動調整を必要とせずに、オープンソースのデータ処理および分析ワークロードを実行しやすくするフルマネージド サービスです。
Dataproc Serverless for Spark は、既存の Spark ワークロードを Google Cloud に簡単に移行するための最適化された環境を提供します。
このラボでは、Dataproc Serverless 環境でバッチ ワークロードを実行します。このワークロードは、Spark テンプレートを使用して Avro ファイルを処理し、BigQuery テーブルを作成して読み込みます。
演習内容
- 環境を構成する
- ラボのアセットをダウンロードする
- Spark コードを構成し、実行する
- BigQuery でデータを確認する
設定
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は制限されており、一時停止することはできません。[ラボを開始] ボタンをクリックするとタイマーが開始され、Cloud リソースを利用できる時間が表示されます。
この Qwiklabs ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。一時的な認証情報が新しく提供されるため、ラボ受講中の Google Cloud Platform へのログインおよびアクセスにはその認証情報を使用してください。
前提条件
このラボを完了するには、次のものが必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)。
- ラボを完了するために必要な時間。
注: すでに個人の GCP アカウントやプロジェクトをお持ちの場合でも、そのアカウントやプロジェクトはラボでは使用しないでください。
ラボを開始してコンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
左側のパネルには、このラボで使用する必要がある一時的な認証情報が表示されます。
-
ユーザー名をコピーし、[Google Console を開く] をクリックします。
ラボでリソースが起動し、別のタブで [アカウントの選択] ページが表示されます。
注: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
-
[アカウントの選択] ページで [別のアカウントを使用] をクリックします。[ログイン] ページが開きます。
-
[接続の詳細] パネルでコピーしたユーザー名を貼り付けます。パスワードもコピーして貼り付けます。
注: 認証情報は [接続の詳細] パネルに表示されたものを使用してください。Google Cloud Skills Boost の認証情報は使用しないでください。請求が発生する事態を避けるため、Google Cloud アカウントをお持ちの場合でも、このラボでは使用しないでください。
- その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
しばらくすると、このタブで Cloud コンソールが開きます。
注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。
Google Cloud Shell の有効化
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。
-
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。
gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
出力:
Credentialed accounts:
- @.com (active)
出力例:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project =
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注:
gcloud ドキュメントの全文については、
gcloud CLI の概要ガイド
をご覧ください。
タスク 1. 環境構成のタスクを実施する
まず、Dataproc Serverless ワークロードの実行をサポートするための環境構成のタスクを行います。
- Cloud Shell で次のコマンドを実行して、プライベート IP アクセスを有効にします。
gcloud compute networks subnets update default --region={{{project_0.default_region |REGION}}} --enable-private-ip-google-access
- 次のコマンドを使用して、新しい Cloud Storage バケットをステージング ロケーションとして作成します。
gsutil mb -p {{{project_0.project_id |PROJECT_ID}}} gs://{{{project_0.project_id |PROJECT_ID}}}
- 次のコマンドを使用して、BigQuery がテーブルの作成と読み込みの際に一時的なロケーションとして使用する、新しい Cloud Storage バケットを作成します。
gsutil mb -p {{{project_0.project_id |PROJECT_ID}}} gs://{{{project_0.project_id |PROJECT_ID}}}-bqtemp
- データを格納する BQ データセットを作成します。
bq mk -d loadavro
環境構成のタスクを実施する
タスク 2. ラボのアセットをダウンロードする
次に、ラボを完了するために必要なアセットを、ラボで指定された Compute Engine VM にダウンロードします。ラボの残りの手順は、Compute Engine VM 内で行います。
- ナビゲーション メニューで [Compute Engine] をクリックします。プロビジョニングされた Linux VM が表示されます。[lab-vm] インスタンスの横にある [SSH] ボタンをクリックします。
- VM のターミナル プロンプトで、BigQuery に格納するために処理する Avro ファイルをダウンロードします。
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
- 次に、先ほど作成したステージング用の Cloud Storage バケットに Avro ファイルを移動します。
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}}
- Serverless 環境で実行する Spark コードを含んだアーカイブをダウンロードします。
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/dataproc-templates.zip
- アーカイブを解凍します。
unzip dataproc-templates.zip
- Python ディレクトリに移動します。
cd dataproc-templates/python
ラボのアセットをダウンロードする
タスク 3. Spark コードを構成し、実行する
次に、VM インスタンスのターミナルで環境変数をいくつか設定し、Spark テンプレートを実行してデータを BigQuery に読み込みます。
- Dataproc Serverless 環境に次の環境変数を設定します。
export GCP_PROJECT={{{project_0.project_id |PROJECT_ID}}}
export REGION={{{project_0.default_region |REGION}}}
export GCS_STAGING_LOCATION=gs://{{{project_0.project_id |PROJECT_ID}}}
export JARS=gs://cloud-training/dataengineering/lab_assets/idegc/spark-bigquery_2.12-20221021-2134.jar
- 次のコードで Spark Cloud Storage to BigQuery テンプレートを実行し、Avro ファイルを BigQuery に読み込みます。
./bin/start.sh \
-- --template=GCSTOBIGQUERY \
--gcs.bigquery.input.format="avro" \
--gcs.bigquery.input.location="gs://{{{project_0.project_id |PROJECT_ID}}}" \
--gcs.bigquery.input.inferschema="true" \
--gcs.bigquery.output.dataset="loadavro" \
--gcs.bigquery.output.table="campaigns" \
--gcs.bigquery.output.mode=overwrite\
--gcs.bigquery.temp.bucket.name="{{{project_0.project_id |PROJECT_ID}}}-bqtemp"
注: 次のような警告が表示されても無視して構いません: WARN FileStreamSink: Assume no metadata directory. Error while looking for metadata directory in the path... これは小規模なテストであるため、メタデータ ディレクトリは必要ありません。
注: バッチジョブが失敗したことを示すエラー メッセージが表示された場合は、しばらく待機してから、ジョブが成功するまでコマンドを再実行してください。
Spark コードを構成し、実行する
タスク 4. データが正しく BigQuery に読み込まれたことを確認する
Spark テンプレートが正常に実行されたら、次に BigQuery で結果を確認します。
- BigQuery の新しいテーブルでデータを表示します。
bq query \
--use_legacy_sql=false \
'SELECT * FROM `loadavro.campaigns`;'
- クエリによって次のような結果が返されるはずです。
出力例:
+------------+--------+---------------------+--------+---------------------+----------+-----+
| created_at | period | campaign_name | amount | advertising_channel | bid_type | id |
+------------+--------+---------------------+--------+---------------------+----------+-----+
| 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 |
| 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 |
| 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 |
| 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 |
| 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 |
| 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 |
| 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 |
| 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 |
| 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 |
| 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 |
+------------+--------+---------------------+--------+---------------------+----------+-----+
データが BigQuery に読み込まれたことを確認する
お疲れさまでした
Dataproc Serverless for Spark を使用してバッチ ワークロードを実行し、Avro ファイルを BigQuery テーブルに読み込むことに成功しました。
Copyright 2020 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。