【正解】D
【0からの解説】
①前提知識
・Dataproc(現 Managed Service for Apache Spark):Apache Spark・Hadoop・Hive・Pig などのオープンソースのデータ処理エコシステムを実行するマネージド サービスです。クラスタの作成・スケーリング・削除は平均 90 秒以内で完了し、インストールや構成の手間はほとんどありません。Hive はクラスタ イメージに含まれる標準コンポーネントです。
・Cloud Storage コネクタ:Dataproc のクラスタには既定でインストールされており、Hadoop / Hive から gs:// のパスを HDFS と同じように読み書きできます。そのため Hive の外部テーブルの LOCATION に Cloud Storage のパスを指定すれば、Parquet ファイルを HDFS にコピーせずに直接クエリできます。
・BigQuery の外部テーブル:BigQuery から Cloud Storage 上のファイルを GoogleSQL でクエリする仕組みです。
②問題文の要件の整理
・Cloud Storage 上の Parquet データに対するインタラクティブな SQL クエリ
・既存の HiveQL クエリをそのまま活用したい
・Cloud Storage 内のデータを直接クエリする
・運用のオーバーヘッドを最小限にする
③正解の理由
Dataproc なら、Hive を含むマネージドな Hadoop 環境を短時間で用意でき、既存の HiveQL をそのまま Cloud Storage 上の Parquet に対して実行できます。ソフトウェアのインストールや構成は Google が管理するため運用負荷が小さく、使わないときはクラスタを削除したりオートスケーリングを使ったりして費用も抑えられます。要件(HiveQL・Cloud Storage を直接参照・運用負荷最小)をすべて満たすのは D です。
【誤りの選択肢】
A:Compute Engine 上への手動構築でも動作はしますが、Hadoop / Hive のインストール・構成・パッチ適用・スケーリング・障害対応をすべて自分で行う必要があり、「運用のオーバーヘッドを最小限に」という要件に反します。
B:データを BigQuery のネイティブ テーブルに読み込むと、「Cloud Storage 内のデータに直接クエリする」という要件に反し、余分なデータ移動と二重保存が発生します。さらに Hive-BigQuery コネクタは Hive(Hadoop クラスタ)上で動くコネクタなので、結局は Hive の実行環境が別途必要になります。
C:BigQuery の外部テーブルを使えば Cloud Storage 上の Parquet を直接クエリできますが、クエリ言語は GoogleSQL であり HiveQL ではありません。既存の HiveQL クエリを活用するという要件を満たさず、クエリの書き換えが必要になります。
【参考】
クラスタの Managed Service for Apache Spark の概要Cloud Storage コネクタ | Managed Service for Apache SparkHive-BigQuery コネクタ | Managed Service for Apache Spark