SAA高性能なアーキテクチャの設計
あるデータ分析会社が Amazon Redshift に 100TB の構造化データを格納しており、さらに 1PB の生データ(Parquet 形式)を Amazon S3 のデータレイクに保存しています。データアナリストは Redshift テーブルと S3 の Parquet ファイルを SQL で結合分析したいと考えています。データ移動の ETL を最小化しつつ最もクエリパフォーマンスが高い方法はどれですか。
AAWS Glue ETL ジョブで S3 の Parquet データを定期的に Redshift へロードし、クエリをすべて Redshift 内で完結させる
AWS Glue ETL で S3 データを Redshift に全量ロードする方法はクエリ性能は高いが、1PB 分のデータ移動・ストレージコストが膨大になり ETL 最小化の要件に反する。日次ロードではデータ鮮度も低下する。
BAmazon Athena で S3 の Parquet データをクエリし、その結果を Redshift テーブルにエクスポートしてから結合する
Amazon Athena は S3 データのアドホッククエリに優れるが Redshift テーブルとのネイティブ JOIN ができない。クエリごとに Athena 結果を Redshift にエクスポートする方法は複雑でリアルタイム結合分析には不適。
CAmazon Redshift Spectrum を使用し、S3 の Parquet データを外部テーブルとして定義して Redshift テーブルと JOIN する
✓ 正解
Amazon Redshift Spectrum は S3 の Parquet データを外部テーブルとして定義しデータ移動なしに Redshift テーブルと JOIN できる。Spectrum ノードの並列処理と述語プッシュダウンで高性能を実現。
DAWS Lake Formation でデータカタログを構築し、Amazon EMR で Redshift と S3 のデータを Spark SQL で統合する
Amazon EMR と Spark SQL は大規模分散処理に適するがクラスター管理の運用負荷が高く、Redshift テーブルへのアクセスに JDBC 設定が必要。ETL 最小化と即時クエリを求める本要件には過剰な構成。
解説
Amazon Redshift Spectrum は、Redshift クラスターから S3 上のデータ(Parquet・ORC・CSV 等)を外部テーブルとして直接クエリできる機能。データを Redshift にロードせずに S3 データと Redshift テーブルを SQL で JOIN できるため ETL が不要。Spectrum ノードが S3 データを並列処理し、Parquet の列指向フォーマットに対する述語プッシュダウンで高性能なクエリが実現できる。
選択肢Aの AWS Glue ETL によるロードはクエリ性能は高いが、1PB のデータを Redshift に移動するとストレージコストが大幅増加し ETL レイテンシも生じるため、ETL 最小化の要件に反する。
選択肢Bの Amazon Athena は S3 データのクエリには優れているが、Redshift テーブルとのネイティブ JOIN 機能がなく、クエリごとに結果をエクスポートする手順は非効率で JOIN 分析には不適。
選択肢Dの Amazon EMR と Spark SQL は大規模分散処理に適しているが、クラスターの起動・管理オーバーヘッドがあり Redshift テーブルへのアクセスに JDBC 追加設定が必要で ETL 最小化の要件を満たさない。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでSAAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →