AWS認定資格 WEB問題集&徹底解説

データエンジニア-アソシエイト

正解 D問題
分野2:データストアの管理 タスクステートメント2.2:データカタログシステムの理解
合格に向けて、もっと深く学習する
豊富な問題と詳細なAWSサービス解説を、24時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
ある工場の設備保全チームは、稼働ログを日次で Amazon S3 に格納し、Amazon Athena で分析しています。分析対象は直近 30 日以内のログのみで、それより古いログは一切分析に使われません。テーブルスキーマを自動検出するために AWS Glue クローラーを設定しましたが、クローラーの実行が非常に長時間に及び、スキーマ検出がなかなか完了しません。

追加コストを抑えつつクローラーの実行時間を短縮するには、どうすればよいですか。
  • Glue クローラーの Scanning rate パラメータを引き上げて、スキャン処理を高速化する
  • 30 日より古いログファイルにライフサイクルルールを適用して S3 Glacier Flexible Retrieval に移行し、クローラーがアクセスするデータ量を減らす
  • ログファイルを複数の小さいファイルに分割し、1 ファイルあたりの読み取り時間を短縮する
  • Glue クローラーに除外パターンを設定し、30 日より古いログファイルのパスをクロール対象から除外する
解説 頻出度★★★★★
この問題は、「クローラーの実行が遅い × 直近 30 日分しか使わない × 追加コストを抑える」の要件で、クロール対象そのものを除外パターンで減らすという発想に至れるかがポイント

A. Glue クローラーの Scanning rate パラメータを引き上げて、スキャン処理を高速化する

Scanning rate(スキャンレート)は、Amazon DynamoDB をデータソースにするクローラーで、テーブルの読み取りキャパシティのうちどれだけを使うかを指定するパラメータです。
本問のデータソースは Amazon S3 であり、そもそもこのパラメータは適用されません。仮に類似の設定があったとしても、スキャンする対象データ量そのものは減らないため、根本的な解決になりません。
「速度パラメータを上げれば速くなる」という直感を突いた誤答です。

B. 30 日より古いログファイルにライフサイクルルールを適用して S3 Glacier Flexible Retrieval に移行し、クローラーがアクセスするデータ量を減らす

ライフサイクルルールで古いログを Amazon S3 Glacier Flexible Retrieval へ移す方法は、ストレージ料金の最適化としては妥当です。しかしストレージクラスの移行そのものにリクエスト料金が発生し、ログファイルが大量にあるほど(オブジェクト単位で課金されるため)コストがかさみます。
また最低保存期間(90 日)の課金や、後から参照したくなった場合の復元作業といった副作用もあり、「追加コストを抑えつつ」という判断軸から外れます。
クロール時間を短縮したいだけなら、データを動かさずに対象から外す方が確実で安上がりです。

C. ログファイルを複数の小さいファイルに分割し、1 ファイルあたりの読み取り時間を短縮する

ファイルを小さく分割すると、S3 上のオブジェクト数が増えてクローラーの走査対象が増えるため、実行時間はむしろ悪化します。1 ファイルあたりの読み取りは軽くなっても、リストと読み取りの往復回数が増えるからです。
小さなファイルが大量にある状態は Athena のクエリ性能にも悪影響を与えるため、データレイクでは逆に小さなファイルをまとめる(コンパクション)のが定石です。
直感に反する方向の最適化を選ばせる誤答です。

正解

D. Glue クローラーに除外パターンを設定し、30 日より古いログファイルのパスをクロール対象から除外する

AWS Glue クローラーには、クロール対象から特定のパスを外す除外パターン(glob 形式)を設定できます。30 日より古いログのパスを除外すれば、クローラーが走査するオブジェクト数が直接減り、実行時間が短縮されます。
データを移動・変換する必要がないため追加コストはゼロで、除外したファイルも S3 にそのまま残るので、必要になれば設定を戻すだけで再びクロールできます。
「分析に使わないデータはそもそもクロールしない」という、要件に最も素直に応える方法です。

これだけ覚える(記憶フック)
クローラーが遅い=見せているデータが多すぎる。速くする前に、除外パターンで「見せない」。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
クローラーの実行時間が長い(スキーマ検出が終わらない) 実行時間は走査するオブジェクト数にほぼ比例する。まず対象を減らせないかを考える
→選択肢(D)が正解・選択肢(C)を消す
分析対象は直近 30 日以内のログのみ 使わないデータはクロール対象から除外すればよい。データそのものを動かす必要はない
→選択肢(D)が正解
追加コストを抑えたい ストレージクラスの移行は移行リクエスト料金が発生する。除外パターンの設定は無料
→選択肢(B)を消す
データソースは Amazon S3 Scanning rate はDynamoDB をソースにするクローラー向けのパラメータで S3 には無関係
→選択肢(A)を消す
ひっかけポイント
  • 「Scanning rate を引き上げる」は速度チューニングらしく見えるが、DynamoDB ソース専用のパラメータ。S3 のクロールには存在しない
  • ファイル分割は「1 ファイルが軽くなる=速くなる」と錯覚しやすいが、スモールファイル問題でクローラーも Athena も遅くなる
  • Glacier への移行はストレージ料金は下がるがリクエスト料金は増える。「追加コストを抑えつつ」という判断軸に引っかける選択肢
  • 除外パターンはデータを消さない。「古いログを削除する」選択肢と混同せず、カタログに載せる範囲を絞るだけだと理解する
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「毎日クローラーを再実行しており、新しく追加された分だけを素早く反映したい」 増分クロール(クロール新規フォルダーのみ)の設定が正解軸に。
「古いログはもう保存する必要すらないためコストを下げたい」 S3 ライフサイクルによる失効(削除)やアーカイブが正解に浮上する。
「日付ごとのフォルダ構成で Athena のスキャン量を減らしたい」 パーティション(および Partition Projection)の設計が正解軸に。
「スキーマが安定しており、そもそもクローラーを使いたくない Glue Data Catalog へ手動でテーブル定義する、または Athena の DDL で作成する方法が正解に。
「小さなログファイルが大量にありクエリ性能が落ちている ファイルのコンパクションと列指向フォーマット(Parquet)への変換が正解軸に。
関連サービスの解説 Amazon Athena
Amazon Simple Storage Service (Amazon S3)
AWS Glue
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 0%
No.9 解説
ある工場の設備保全チームは、稼働ログを日次で Amazon S3 に格納し、Amazon Athena で分析しています。分析対象は直近 30 日以内のログのみで、それより古いログは一切分析に使われません。テーブルスキーマを自動検出するために AWS Glue クローラーを設定しましたが、クローラーの実行が非常に長時間に及び、スキーマ検出がなかなか完了しません。

追加コストを抑えつつクローラーの実行時間を短縮するには、どうすればよいですか。
  • Glue クローラーの Scanning rate パラメータを引き上げて、スキャン処理を高速化する
  • 30 日より古いログファイルにライフサイクルルールを適用して S3 Glacier Flexible Retrieval に移行し、クローラーがアクセスするデータ量を減らす
  • ログファイルを複数の小さいファイルに分割し、1 ファイルあたりの読み取り時間を短縮する
  • Glue クローラーに除外パターンを設定し、30 日より古いログファイルのパスをクロール対象から除外する

(会員限定)当問題の評価をお願いします。改善に活用します。