DEAデータストアの管理
Amazon Athenaを使用して、Amazon S3上の大規模なトランザクションデータを分析しています。データは「年/月/日/時」の形式で細かくパーティション化されており、毎時間新しいパーティションが追加されます。現在、AWS Glueクローラを定期実行してメタデータを更新していますが、パーティション数が非常に多いため、クエリ実行前にパーティションのメタデータを取得する時間が長くなり、全体のクエリパフォーマンスが低下しています。この問題を解決する最も効果的なアプローチはどれですか。
AAWS Glueクローラのスケジュールを毎分に変更し、新しいパーティションがカタログに即座に反映されるようにする
AWS Glueクローラを毎分実行するように構成すると、Glue APIの呼び出しクォータ制限に達するリスクが高まり、コストも増加します。また、クエリ実行時のメタデータ取得遅延という根本的な問題は解決しません。
BAthenaのテーブル定義でパーティション射影(Partition Projection)を構成して自動計算させる
✓ 正解
パーティション射影(Partition Projection)を使用すると、Athenaがルールに基づいてパーティション情報を自動計算するため、GlueデータカタログへのAPI呼び出しが不要になり、クエリのメタデータ取得時間を大幅に短縮できます。
CS3イベント通知を使用してLambdaをトリガーし、AthenaのMSCK REPAIR TABLEコマンドを実行する
Lambdaを使用してMSCK REPAIR TABLEを実行する方法は、新しいパーティションをカタログに追加する作業を自動化するだけです。パーティション数が膨大な場合、クエリ計画時にメタデータを取得するボトルネックは解消されません。
DAthenaのクエリ結果の再利用(Result Reuse)機能を有効にして、パーティションのスキャンにかかる時間を短縮する
Athenaのクエリ結果の再利用機能は、全く同じクエリが繰り返し実行された場合に以前のキャッシュを返す機能ですが、パーティションの追加によるメタデータ管理のオーバーヘッドや初回クエリの遅延を解決するものではありません。
解説
Amazon Athenaのパーティション射影(Partition Projection)機能は、高度にパーティション化されたテーブルでのクエリパフォーマンスを大幅に向上させます。通常、AthenaはAWS GlueデータカタログやHiveメタストアからパーティション情報を取得しますが、パーティション数が多い場合、このメタデータ取得フェーズがボトルネックになります。パーティション射影を使用すると、構成ファイル(テーブルプロパティ)に定義されたルール(範囲やパターン)に基づいてAthenaがメモリ上でパーティションを自動計算するため、メタデータストアへのAPI呼び出しが不要になります。これにより、パーティションの追加をクローラやMSCK REPAIR TABLEで管理する必要がなくなり、クエリの計画時間も劇的に短縮されます。クローラの頻繁な実行やMSCK REPAIR TABLEの呼び出しは、カタログ更新の遅延やAPIクォータ制限の問題を引き起こす可能性があります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →