模擬問題集DEA-C01練習問題 2

DEA-C01 練習問題 2

AWS Data Engineer – Associate・データの取り込みと変換・無料公開(全 200 問中 15 問を無料公開中)

問題
ある e コマース企業は、毎日の顧客取引ログを CSV 形式で収集し、Amazon S3 に保存しています。同社は Amazon Athena を使用して、各ログを受信したその日のうちにログから属性のサブセット(一部の列)をスキャンします。 取引量の増加に伴いクエリ時間が長くなっています。同社はクエリパフォーマンスを改善したいと考えています。 最も短いクエリ時間(SHORTEST query times)でこれらの要件を満たすソリューションはどれですか?

選択肢と解説

  • CSV ログを、Athena での並列性を高めるために複数の ORC ファイルに変換する。Amazon S3 で日付ごとにパーティション分割する。列指向プッシュダウンフィルタ(columnar pushdown filters)を使用する。
  • 2
    CSV ログを JSON に変換する。Amazon S3 で日付ごとにパーティション分割する。Athena で動的フィルタリング(dynamic filtering)を使用してスキャン量を削減する。
  • 3
    CSV ログを Avro に変換する。Amazon S3 で日付ごとにパーティション分割する。Athena で射影ベースのパーティショニング(projection-based partitioning)を使用する。
  • 4
    CSV ログを 1 日ごとに 1 つの Apache Parquet ファイルに変換する。Amazon S3 で日付ごとにパーティション分割する。Athena で述語プッシュダウンフィルタ(predicate pushdown filters)を使用する。

解説

【正解】A

【0からの解説】
Athena はサーバーレスのクエリサービスで、S3 からスキャンしたデータ量に応じて課金・処理されます。クエリを速くする鍵は「スキャンするデータ量を減らす」ことと「並列に読み取る」ことの 2 点です。

本問は「属性のサブセット(一部の列)だけをスキャンする」ワークロードなので、行指向の CSV/JSON/Avro よりも、列だけを読み出せる 列指向フォーマット(ORC や Parquet) が圧倒的に有利です(必要な列だけを読む列プルーニング)。さらに「日付ごとにパーティション分割」すれば対象日のデータだけをスキャンでき(パーティションプルーニング)、列指向プッシュダウンで不要なデータブロックの読み取りもスキップできます。

A と D はどちらも列指向+日付パーティション+プッシュダウンで似ていますが、決め手は「並列性」です。Athena は 1 つのクエリを多数のリーダーで分散処理するため、データが複数ファイルに分かれているほど並列度が上がり高速になります。A は「複数の ORC ファイル」にして並列性を高めると明記しているのに対し、D は「1 日 1 ファイルの単一 Parquet」にまとめてしまうため、その日のクエリを 1 ファイルしか並列に分割できず、並列度が下がってかえって遅くなる可能性があります。最短のクエリ時間という要件には A が最適です。

【誤りの選択肢】
B:JSON は行指向のテキスト形式で、一部の列だけを効率的に読めず、CSV と同様にスキャン量が大きくなります。「動的フィルタリング」はこの列サブセット高速化の本質ではありません。
C:Avro は行指向のバイナリ形式で、列サブセットのクエリ最適化には Parquet/ORC のような列指向形式が適します。「射影ベースのパーティショニング(partition projection)」はパーティション管理の手法であり、行指向のままでは列スキャン削減効果が得られません。
D:列指向 Parquet+パーティション+述語プッシュダウン自体は有効ですが、「1 日 1 つの単一ファイル」にまとめると Athena が並列に読み取れず並列度が下がります。最短クエリ時間を狙う本問では、複数ファイルで並列性を確保する A に劣ります。

【参考】
Amazon Athena のパフォーマンスチューニング Top 10 のヒント
Athena でのパフォーマンス調整
← 練習問題 1練習問題 3
DEA-C01 の模擬問題集は全 200

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

DEA-C01 の模試を受ける料金プランを見る

DEA-C01 の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15