DEAデータオペレーションとサポート
あるデータエンジニアリングチームは、Amazon S3 のデータレイクを対象に AWS Glue Crawler を1時間ごとにスケジュール実行しています。
データは s3://bucket/year=YYYY/month=MM/day=DD/ のパーティション構造で格納されており、毎時間、現在日付のプレフィックスに新規ファイルが追加されます。
クロールの実行時間がデータ蓄積とともに増加しており、新規データの検出のみに絞ってパフォーマンスを改善したいと考えています。
最も適切な設定はどれですか?
ACrawler の対象パスを現在日付のプレフィックス(例:s3://bucket/year=2025/month=12/)に限定し、すべてのサブフォルダを再クロールする設定のままにする
Crawlerの対象パスを現在日付プレフィックスに限定する方式はそのパス配下のデータ増加に伴い再びクロール時間が増加するため、根本的なパフォーマンス低下対策にはなりません。
BCrawler の再クロールポリシーを「新しいサブフォルダのみをクロールする」に変更し、前回のクロール以降に追加されたフォルダのみを対象にする
✓ 正解
Crawler の再クロールポリシーを「新しいサブフォルダのみ」に変更すると、前回クロール以降に追加されたフォルダのみを対象にして既存データの再クロール処理を省略できます。
CCrawler のスケジュール実行を廃止し、S3 イベント通知をトリガーに AWS Lambda で Glue Data Catalog のパーティションを手動登録する
Lambda によるパーティション手動登録はスキーマ変更の自動検出ができなくなり、Crawler を使う本来の自動スキーマ推測利点が失われてしまいます。
DAWS Glue Data Catalog API の batch_create_partition を使用するスクリプトを作成し、Crawler を完全に置き換える
batch_create_partition API 利用も技術的には実装可能ですが、スキーマ自動検出機能が不要な場合に限定され、開発・運用コストが高くなります。
解説
AWS Glue Crawlerの再クロールポリシーで「新しいサブフォルダのみをクロールする」を選択すると、前回クロール以降に追加されたフォルダだけを対象にします。既存データへの再クロールを省略でき、データ蓄積に伴うクロール時間の増加を防ぐことができます。
選択肢Aの対象パス限定は、そのパス配下のデータが増えるにつれてクロール時間が再び増加するため根本的な解決にはなりません。
選択肢CのLambdaによるパーティション手動登録は機能しますが、スキーマ変更の自動検出ができなくなり、Crawlerを使う本来の利点が失われます。
選択肢Dのbatch_create_partition APIの利用も実装可能ですが、スキーマ自動検出が不要な場合に限られ、開発・運用コストも高くなります。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →