【正解】B
【0からの解説】
①前提知識:Dataflow は Apache Beam をベースにしたフルマネージドのデータ処理サービスで、バッチ処理とストリーミング処理の両方に対応し、データ量に応じてワーカーを自動でスケール(オートスケーリング)します。Cloud Storage からの読み込み、JSON の解析・整形・フィルタなどの変換、BigQuery への書き込みを 1 つのパイプラインで実行でき、Google 提供のテンプレート(例: Cloud Storage Text to BigQuery。UDF で変換を追加可能)も用意されています。Cloud Data Fusion はノーコードの GUI で ETL パイプラインを構築するサービス、Cloud Run functions(旧 Cloud Functions)はイベントをきっかけに短時間の処理を実行するサーバーレス関数です。
②要件の整理:「100 GB 規模の JSON データ」「増え続ける(スケーラビリティが必要)」「変換して BigQuery に読み込む」「Google 推奨のアプローチ」です。
③正解の理由:Dataflow はデータ量の増加に合わせて自動でスケールする分散処理基盤で、変換と BigQuery への書き込みを 1 つのマネージドなパイプラインで完結できます。大量かつ増え続けるデータの変換・読み込み(ETL)として、Google が推奨する代表的な構成です。
【誤りの選択肢】
A:Cloud Data Fusion で未加工テーブルに取り込んでから SQL で変換する ELT 構成も動作はしますが、単にデータを BigQuery に移すだけの用途に Cloud Data Fusion のインスタンス(常時稼働で費用がかかる)を用意するのは過剰で、変換処理も別途 SQL ジョブとして管理する必要があります。変換と読み込みを 1 つのスケーラブルなパイプラインで行える Dataflow と比べて構成が冗長です。
C:手動でダウンロードしてローカルの Python スクリプトで処理する方法は、増え続ける 100 GB 超のデータに対してスケールせず、自動化もされず、ダウンロードによる余計なデータ移動やセキュリティ上のリスクも生じます。Google 推奨のアプローチではありません。
D:Cloud Run functions は短時間で終わる軽量なイベント処理向けで、実行時間やメモリに上限があります。100 GB 規模で増え続けるデータの一括変換のような大規模なデータ処理には向いておらず、分散処理やリトライの仕組みも自前で作り込む必要があります。
【参考】
Dataflow の概要Google 提供のテンプレート | Cloud DataflowCloud Storage からの JSON データの読み込み