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

BigQuery と Dataproc を使用したデータ アナリティクスを比較する

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

パソコン / ノートパソコンのアイコン このハンズオンラボは、デスクトップまたはノートパソコンでのみ完了するようにしてください。

チェック アイコン ラボごとに 5 回までしか試行できません。

クイズのターゲット アイコン なお、最初の試行で全問正解できないことや、タスクをやり直す必要があることはよくあります。これは学習プロセスの一部です。

タイマー アイコン ラボを開始すると、タイマーを一時停止することはできません。1 時間 30 分後にラボは終了し、最初からやり直す必要があります。

ヒントアイコン 詳しくは、ラボでの技術的なヒントの資料をご覧ください。

アクティビティの概要

クラウド データ分析は急速に進化している分野です。そのため、クラウド データ アナリストは、業務で能力を発揮するために、新しいプラットフォームとテクノロジーについて学び続ける必要があります。それには、BigQuery や Dataproc など、さまざまなプラットフォームを比較するのが良い方法です。

BigQuery と Dataproc はどちらもクラウド データ処理プラットフォームですが、データの分析に使用するデータ処理エンジン、SQL 言語、開発環境は異なります。

BigQuery は、大規模なデータセットに対するインタラクティブなクエリに適したデータ ウェアハウスです。使いやすく、幅広いデータ分析タスクを扱えます。

Dataproc は、大規模なデータセットに対するバッチ処理ジョブに適した、Hadoop と Spark のマネージド サービスです。BigQuery よりも柔軟性がありますが、設定と使用が複雑になる可能性があります。

BigQuery と Dataproc はどちらも他の Google Cloud サービスと統合されているため、両サービス間でのデータの移動や、データレイク ソースの検出は容易です。

このラボでは、2 つの CSV ファイルのデータを結合して Parquet ファイルにします。次に、結合したデータを使用して、BigQuery で実行した分析と、同じデータを使用して Dataproc と Spark で実行した分析を比較します。

シナリオ

TheLook eCommerce では、オンライン注文の返品を実店舗で受け付けるプログラムを試験運用しています。このプログラムによって、商品を簡単に返品できるようになるため、顧客満足度と売上の向上につながることが期待されます。

このプログラムの成果を追跡するため、主任マーチャンダイザーの Meredith は、店舗の住所と各店舗の返品データを組み合わせたレポートを作成するよう、あなたに依頼しました。このレポートは、地域ごとの返品を追跡するために使用されます。また、この情報は、さまざまな市場で試験運用プログラムが成功しているか否かを判断するうえでも役立ちます。

あなたはまず、各拠点から収集したデータを調べます。しかし、すぐにデータの量が膨大であると気づきます。収集、処理、分析が必要な大量のデータを扱うため、データ アーキテクトの Artem に連絡して支援を依頼します。

Artem は、Dataproc を使用して、対象となる 2 つの CSV ファイルを 1 つの Parquet ファイルに結合することを提案します。Parquet は、高速分析クエリ用に最適化されたカラム型データ形式です。TheLook eCommerce が Spark を使用して分析を行う企業を買収したばかりであるため、Artem は Dataproc と Spark について詳しく学ぶ絶好の機会だと補足しています。

Artem は、結合したデータを Meredith のレポートに使用し、使い慣れたプロダクトである BigQuery を中心とした分析と、Dataproc と Spark を中心とした分析の 2 つの分析方法を比較することを提案します。この方法は、Dataproc と Spark について詳しく学び、さらに 2 つのプラットフォームを比較して、どちらが試験運用プログラムのニーズに適しているかを確認するのにも向いています。

あなたは、アドバイスをくれた Artem に感謝しつつ次の作業に取り掛かります。BigQuery を Dataproc と Spark の組み合わせと比較する前に、比較に使用するデータを収集して処理する方法について計画を立てる必要があります。

2 つの異なる CSV ファイルを結合する方法をうまく計画できるように、図を作成します。Dataproc Spark SQL を使用してファイル同士を結合し、Parquet 形式のファイルにするというアプローチです。

Dataproc Spark SQL を使用して 1 つの Parquet ファイルに結合される 2 つの CSV ファイルを示す図

このデータを土台として使用し、比較を行います。

このタスクの手順は次のとおりです。最初に、Dataproc クラスタ上で Jupyter ノートブックを開きます。次に、ノートブックの手順に沿って、2 つの CSV ファイルを結合して Parquet ファイルを生成します。さらに、Cloud Storage バケットに保存されている Parquet ファイルのデータを BigQuery 標準テーブルに読み込んで分析します。最後に、同じ Parquet を Dataproc クラスタの Jupyter ノートブックで参照して、BigQuery を使用したデータ分析を Dataproc と Spark を使用したデータ分析と比較します。

設定

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

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

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

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

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

ラボを開始して Google Cloud コンソールにログインする方法

  1. [ラボを開始] ボタンをクリックします。左側の [ラボの詳細] パネルには、以下が表示されます。

    • 残り時間
    • [Google Cloud コンソールを開く] ボタン
    • このラボで使用する必要がある一時的な認証情報
    • このラボを行うために必要なその他の情報(ある場合)
    注: ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
  2. [Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウで開く] を選択します)。新しいブラウザタブで [ログイン] ページが開きます。

    ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておくと、簡単に切り替えられます。

    注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
  3. 必要に応じて、下のGoogle Cloud ユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。[Next] をクリックします。

{{{user_0.username | "Google Cloud username"}}}

[ラボの詳細] パネルでも Google Cloud ユーザー名を確認できます。

  1. 以下の Google Cloud パスワードをコピーして、[ようこそ] ダイアログに貼り付けます。[Next] をクリックします。
{{{user_0.password | "Google Cloud password"}}}

[ラボの詳細] パネルでも Google Cloud のパスワードを確認できます。

重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。 注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
  1. その後次のように進みます。
    • 利用規約に同意します。
    • 一時的なアカウントですので、復元オプションや 2 要素認証プロセスは設定しないでください。
    • 無料トライアルに登録しないでください。

しばらくすると、このタブで Cloud コンソールが開きます。

注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。 ナビゲーション メニュー アイコンがハイライトされた Google Cloud コンソール メニュー 注: [ラボを開始] をクリックすると、ラボ用リソースのプロビジョニングにかかる時間が表示されます。なお、表示された時間よりも長くかかることもあります。

タスク 1. Dataproc クラスタ上で JupyterLab を開く

JupyterLab を使用すると、Dataproc クラスタ上で Jupyter ノートブックを作成し、開いたり、編集したりできます。こうすることで、高パフォーマンス、高スケーラビリティといった、このクラスタのリソースの利点を活かして、ノートブックをより高速に実行し、より大きなデータセットを扱うことができるようになります。また、JupyterLab を使用して、他のユーザーと 1 つのプロジェクトで共同作業を行うこともできます。

このタスクでは、Dataproc で既存の Dataproc クラスタを開き、JupyterLab に移動して、このラボの残りのタスクを完了するために使用する Jupyter ノートブックを見つけます。

  1. Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Dataproc」と入力し、Enter キーを押します。
  2. 検索結果から [Dataproc] を選択します。
  3. [クラスタ] ページで、リストされているクラスタの名前(mycluster)をクリックします。
  4. [クラスタの詳細] タブページで、[ウェブ インターフェース] タブを選択します。
  5. [コンポーネント ゲートウェイ] セクションで、[JupyterLab] のリンクをクリックします。
注: JupyterLab のリンクを Jupyter のリンクと間違えないように注意してください。

新しいブラウザタブで JupyterLab 環境が開きます。

  1. 左側のサイドバーに表示されている [GCS] フォルダで C2M4-1 Combine and Export.ipynb ファイルを見つけます。

タスク 2. データを結合して Parquet ファイルをエクスポートする

Meredith は、場所と市場を特定できるように、各返品に関する情報と返品が行われた住所が必要です。しかし、これらの情報は 2 つの別々の CSV ファイルにあります。

店舗の返品データが CSV 形式で店舗からエクスポートされ、Cloud Storage バケットにコピーされています。このデータには、order_id、rma_id、return_status、status_date、product_ied、quantity_returned、store_id が含まれます。

店舗の返品の CSV の最初の 10 行には、次の情報が含まれています。

店舗の返品の CSV ファイルの最初の 10 行。カンマ区切りの列が表示されている

店舗の住所のデータは別の CSV ファイルに含まれています。このデータには、store_id と street_address が含まれます。

店舗の住所の CSV の最初の 10 行には、次の情報が含まれています。

店舗の住所の CSV ファイルの最初の 10 行。カンマ区切りの列が表示されている

このタスクでは、C2M4-1 Combine and Export.ipynb ファイルに含まれている SQL クエリと Python コマンドを実行して、2 つの CSV ファイルを結合します。結合されたファイルは Parquet ファイルとして保存されます。

Dataproc Spark SQL を使用して 1 つの Parquet ファイルに結合される 2 つの CSV ファイルを示す図

  1. 左側のサイドバーで、C2M4-1 Combine and Export.ipynb ファイルをダブルクリックして、JupyterLab 環境で開きます。

  2. JupyterLab のメニューバーで、[Kernel] > [Change Kernel] をクリックし、[PySpark] を選択して、[Select] をクリックします。

次に、ノートブックの手順に沿って、各セルのコードを実行します。

  1. ノートブックの各セルをクリックし、[Run the selected cells and advance] アイコン([Run the selected cells and advance] アイコン)をクリックして各セルを実行します。または、Shift+Enter キーを押してコードを実行します。前のセルの出力に依存するセルは、順番に実行する必要があります。間違ってセルを順序どおりに実行しなかった場合は、ノートブックのツールバーにある [Refresh] ボタン([Restart the kernel] アイコン)をクリックして、カーネルを再起動します。
注: ノートブックのセルは、正しい順序で実行する必要があります。ノートブックのセルを実行したときにエラー メッセージが表示された場合は、各セルが実行されたことを確認し、ノートブック全体を再実行してエラーを解消してください。
  1. ノートブックの各セルの出力を確認します。これで 2 つの CSV ファイルが結合され、次のタスクで使用する Parquet ファイルが自動的に生成されました。

Dataproc の Spark セッションは、Dataproc クラスタに接続して Spark アプリケーションを実行する手段です。Spark アプリケーションを開始して DataFrame を作成するための主な方法です。DataFrame は、Spark が処理してクエリを実行できるテーブルです。Spark を使用して、Google Cloud Storage や BigQuery などのさまざまなストレージ システムに対してデータの読み書きを行うことも可能です。

注: Dataproc は、テキスト ファイルに保存されたクエリを扱うこともできます。これは自動化されたプロセスのための一般的なソリューションです。ノートブックを使用することは、開発とデータ探索の標準的なアプローチです。

このノートブックでは、Spark セッションを作成し、CSV ファイルから Spark で使用されるテーブルである DataFrame に店舗の返品データを読み込みました。次に、2 つ目の CSV ファイルから店舗の住所を読み込み、2 つの DataFrame を結合して、結合された単一のテーブルを Parquet ファイルとしてエクスポートしました。最後に、クエリを使用して 1 つの列の名前を変更しました。

ヒント: 以下の質問に答える際は、出力を含むノートブックを開いたままにしてください。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。 データを結合して Parquet ファイルをエクスポートする

タスク 3. BigQuery でデータをクエリする

ここまでで、結合された Parquet ファイルが生成されて Cloud Storage バケットに保存されたので、BigQuery を中心とした分析と Dataproc と Spark を中心とした分析という 2 つの分析方法を比較する準備ができました。

では、BigQuery エンジンを使用してクエリを実行して、データを分析するデータ ウェアハウスである BigQuery から始めましょう。

前のタスクでは、Parquet ファイルを生成して Cloud Storage バケットに保存しました。このデータに BigQuery でアクセスする方法には、外部テーブルと標準テーブルの 2 つがあります。外部テーブルでは、Google Cloud Storage など、BigQuery の外部に保存されているデータを参照します。標準テーブルでは、データのコピーを BigQuery に直接保存します。

Artem からは、標準テーブルはデータのクエリと処理を即座にできるため、ビッグデータの処理には標準テーブルの方が効率的であることが多いと説明されました。したがって、このタスクには標準テーブルが最適であると判断します。

このタスクでは、Parquet ファイルを BigQuery の標準テーブルに読み込み、BigQuery 環境で使用される SQL 言語である GoogleSQL を使用してクエリを実行します。次に、次のタスクで BigQuery を Dataproc と Spark の組み合わせと比較するために必要な情報を確認するための質問に答えます。

  1. JupyterLab のブラウザタブを開いたまま、Google Cloud コンソールのブラウザタブに戻ります(Dataproc のページがまだ開いているはずです)。

  2. Google Cloud コンソールのナビゲーション メニューナビゲーション メニュー)で、[BigQuery] > [Studio] をクリックします。BigQuery Studio は、BigQuery でクエリを記述して実行するための主要な方法です。

注: [Cloud コンソールの BigQuery へようこそ] メッセージ ボックスが表示されることがあります。クイックスタート ガイドと UI の更新に関するリリースノートへのリンクを表示したメッセージ ボックスです。[完了] をクリックして次に進みます。
  1. クエリエディタで、+(SQL クエリ)アイコンをクリックして、新しい [無題のクエリ] タブを開きます。

  2. 次のクエリを [無題のクエリ] タブにコピーします。

LOAD DATA OVERWRITE thelook_gcda.product_returns_to_store FROM FILES ( format="PARQUET", uris=["gs://{{{project_0.project_id | "PROJECT_ID"}}}/store_returns_output/store_returns.parquet/*.parquet"] ) ;

このクエリは、Parquet ファイルを BigQuery にインポートします。

  1. [実行] をクリックします。

URI(Uniform Resource Identifier)は、Cloud Storage バケット内のファイルへのパスです。複数の URI を角かっこ [] で囲むと、URI の集合を LOAD DATA コマンドへの入力として指定できます。この表記は、値が URI の配列であることを示しています。

URI の先頭は常に gs:// として、Cloud Storage 内のリソースであることを示します。上で例に挙げた URI は、末尾が *.parquet であるため、.parquet という拡張子のファイルに限定します。記号 * はワイルドカードで、任意の文字列を意味します。

このクエリは、パス gs:///store_returns_output/store_returns.parquet/ にあるすべてのファイルのうち、名前の最後が .parquet であるものを返し、データを store_returns テーブルに読み込みます。

  1. 次のクエリをクエリエディタにコピーします。
SELECT count(*) FROM thelook_gcda.product_returns_to_store;

このクエリは、thelook_gcda.product_returns_to_store テーブルの行数を返します。

  1. [実行] をクリックします。

デフォルトでは、BigQuery Studio でクエリを実行すると、GoogleSQL 言語を使用して実行されます。GoogleSQL は標準 SQL 言語のスーパーセットです。つまり、すべての標準 SQL クエリに加えて、BigQuery で大量のデータや複雑なデータ型を簡単に操作できる追加の拡張機能も備えています。

  1. 次のクエリをクエリエディタにコピーします。
SELECT substring(CAST(status_date AS STRING), 1, 7) as year_month, return_status, count(order_id) as order_count FROM thelook_gcda.product_returns_to_store GROUP BY year_month, return_status;

このクエリは、受け取った返品の数を、月とステータスごとに表示します。

  1. [実行] をクリックします。
注: 出力の year_month 列に null 値が含まれている場合があります。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

BigQuery でデータをクエリする

タスク 4. Dataproc と Spark でデータをクエリする

BigQuery での分析が完了したので、Dataproc と Spark を中心とした分析に進みます。

Spark は、Dataproc でデータを分析するためのメインのデータ処理エンジンです。Dataproc は Spark クラスタを自動的に管理し、Spark がプリインストールされているため、データ分析において便利で強力な選択肢となります。

Spark では、独自の SQL 言語である Spark SQL も使用します。GoogleSQL と同様に、Spark SQL は SQL 言語です。Spark SQL は分散 SQL 言語です。つまり、Spark クラスタ内の複数のマシンに分散されたデータに対してクエリと分析を実行できます。

Dataproc と Spark で Spark SQL クエリを実行するには、Jupyter ノートブックを使用します。このインタラクティブ環境では、コードを記述して出力を簡単に表示できます。

このタスクでは、Cloud Storage バケットから参照される Parquet ファイルに対して Spark SQL クエリを実行します。次に、BigQuery を中心とした分析と Dataproc と Spark を中心とした分析という 2 つの分析方法の比較を完了するのに役立つ質問に答えます。

  1. ブラウザの [JupyterLab] タブに戻ります。

  2. C2M4-2 Query Store Data with Spark SQL.ipynb ファイルをダブルクリックして、それを JupyterLab 環境で開きます。

  3. JupyterLab のメニューバーで、[Kernel] > [Change Kernel] をクリックし、[PySpark] を選択して、[Select] をクリックします。

ノートブックの手順に沿って、各セルのコードを実行します。

  1. ノートブックの各セルをクリックし、[Run] をクリックするか、Shift+Enter キーを押してコードを実行します。

  2. ノートブックで Spark SQL クエリの出力を確認します。

  3. JupyterLab のメニューバーで、[File]、[Save Notebook] の順にクリックします。

ノートブックが保存されていない場合、以下の進行状況チェックで、これらの手順を完了したことを検出できないことがあります。

このノートブックでは、まず Spark セッションを作成しました。次に、iPython ノートブックを使用して Cloud Storage 内の Parquet ファイルのデータを参照し、DataFrame に入力しました。そして、DataFrame で Spark SQL を使用できるようにビューを作成しました。さらに、DataFrame の先頭の 3 行を返す Spark SQL クエリを実行しました。最後に、前の手順で BigQuery で実行したクエリと同じクエリを実行しました。

[進行状況を確認] をクリックして、このタスクが正しく完了したことを確認します。

Dataproc と Spark でデータをクエリする

タスク 5. クラスタを停止する

ベスト プラクティスとして、環境を終了する前にクラスタを停止してください。

注: クラスタを実行したままにすると、リソースが使用され、追加費用が発生する可能性があります。
  1. ブラウザの [BigQuery] タブに戻ります。
  2. Google Cloud コンソールのタイトルバーにある [検索] フィールドに「Dataproc」と入力します。
  3. 検索結果から [Dataproc] を選択します。左側のメニューから、[クラスタ] をクリックします。
  4. クラスタ リストで、mycluster の横にあるチェックボックスをオンにします。
  5. [アクション] バーで、[停止]、[確認] の順にクリックします。

データ分析の違い

このラボで説明した、BigQuery を使用したデータ分析と、Dataproc と Spark を使用したデータ分析の違いを次の表にまとめます。

タスク 3 タスク 4
中心となるプロダクト BigQuery Dataproc
データ処理エンジン BigQuery Spark
データのロケーション BigQuery の標準テーブル GCS の Parquet ファイル
SQL 言語 GoogleSQL Spark SQL
開発環境 BigQuery Studio Jupyter ノートブック

まとめ

ラボはこれで完了です。

Meredith のレポートに必要なデータを収集して処理し、結合したデータを使い、使い慣れたプロダクトである BigQuery を中心とした分析と Dataproc と Spark を中心とした分析という 2 つのアプローチを比較できました。

まず、既存の Dataproc クラスタで Jupyter ノートブックを開きました。

次に、ノートブックの手順に沿って、返品データと住所データを含む 2 つの CSV ファイルを結合して Parquet ファイルを生成し、その Parquet ファイルを Cloud Storage バケットに保存しました。

Artem のアドバイスに従い、結合結果の Parquet ファイルを使用して、BigQuery を使用したデータ分析と、Dataproc と Spark を使用したデータ分析を比較し、データ処理エンジン、SQL 言語、データ ロケーション、開発環境について詳しく学びました。

これで、Dataproc と Spark を使用して大規模なデータセットを処理する方法についての理解が深まりました。

ラボを終了する

すべてのタスクが問題なく完了したことを確認してから、ラボを終了してください。準備ができたら、[ラボを終了] をクリックし、[送信] をクリックします。

ラボを終了すると、ラボ環境へのアクセス権が削除され、完了した作業にもう一度アクセスすることはできなくなります。

始める前に

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

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

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

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

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

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

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

ありがとうございます。

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

1 回に 1 つのラボ

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

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

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