無限ノック › DEA 練習問題一覧 › 問題
DEAデータの取り込みと変換

ある広告テクノロジー企業は、ユーザーのアクションイベント(click、impression、conversion)をJSON形式でAmazon Data Firehoseに送信し、Amazon S3に保存しています。データアナリストがAmazon AthenaでS3データを効率的にクエリできるよう、Firehoseの配信先S3プレフィックスをイベントペイロード内の event_type フィールドと event_date フィールドの値に基づいてリアルタイムに振り分けたい。追加コンポーネントを最小限に抑えながら実現するにはどうすればよいか。

A
Amazon Data FirehoseでS3にraw配信した後、AWS Glue ETLジョブを定期実行してevent_typeとevent_dateでパーティション分けしてS3に再書き込みする
後段のGlue ETLジョブでパーティション分けする方法は機能しますが、rawデータとパーティション済みデータを二重保管するコスト増、ETLジョブ実行による遅延、追加の運用コンポーネントが必要になり、最小限コンポーネントという要件を満たしません。
B
Amazon Data Firehoseの動的パーティショニングを有効化し、JQ式でペイロードからevent_typeとevent_dateを抽出してS3プレフィックスキーとして指定する
✓ 正解
Amazon Data Firehoseの動的パーティショニングはJQ式でペイロードからフィールドを抽出し、そのままS3プレフィックスに反映する機能です。追加サービスなしにevent_typeとevent_dateによるリアルタイムパーティショニングを実現でき、Athenaのクエリパフォーマンスを最大化できます。
C
Amazon Kinesis Data StreamsにAWS Lambda関数をコンシューマーとして設定し、Lambdaがevent_typeとevent_dateに応じたS3パスに直接書き込む
Kinesis Data Streams+Lambdaでも動的なS3書き込みは可能ですが、Kinesis Data Streamsの管理・Lambda関数のコード実装・スケーリング設定が別途必要となり、Amazon Data Firehoseの動的パーティショニングと比べて運用コストが増大します。
D
Amazon EventBridge Pipesを使ってイベントタイプごとに独立したAmazon Data Firehoseストリームにルーティングし、それぞれS3の別プレフィックスに配信する
EventBridge Pipesで複数Amazon Data Firehoseにルーティングするアプローチはevent_typeの分割はできますが、event_dateのような高カーディナリティなフィールドへの対応でFirehoseストリーム数が爆発的に増え、現実的な管理が困難になります。

解説

選択肢BのAmazon Data Firehoseの動的パーティショニング機能を使うと、届いたレコードのJSONペイロードをJQ式でパースし、抽出したフィールド値をS3プレフィックスに埋め込んでリアルタイムにパーティション分割できます。たとえば `!{partitionKeyFromQuery:event_type}/!{partitionKeyFromQuery:event_date}/` のようなプレフィックス設定で、追加サービスなしにAthenaで効率的に使えるパーティション構造を自動構築できます。 選択肢AはGlue ETLジョブによる後処理で目的は達成できますが、rawデータとパーティション済みデータの二重保管によるコスト増、Glueジョブ実行の遅延が発生し、追加コンポーネントも必要になります。 選択肢CのKinesis Data Streams+Lambda構成でも動的なS3パーティショニングは可能ですが、Kinesis Data Streams・Lambda・カスタムコードの管理が別途必要となり、Amazon Data Firehoseの動的パーティショニングと比べて運用コストが大きくなります。 選択肢DのEventBridge PipesでイベントタイプごとにAmazon Data Firehoseをルーティングする方式はevent_typeによる分割はできますが、event_dateのような値が多様なフィールドへの対応でFirehoseストリーム数が爆発的に増大し、現実的な運用が困難です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDEAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
← DEA の問題一覧に戻る