クイズの説明
Step 2「データパイプライン設計」で学んだ内容の理解度を確認します。全8問、80%(7問)以上正解で合格です。
問題
Q1. MapReduceのShuffle フェーズの役割はどれですか?
- A) データを分散ノードに分配する
- B) 同一キーのデータを集約してReducerに渡す
- C) 出力結果をソートする
- D) 入力データをフィルタリングする
答えを見る
正解: B
Shuffleフェーズは、Mapperが出力したkey-valueペアを同一キーごとにグルーピングし、対応するReducerに渡す役割を担います。ネットワーク転送が発生するため、MapReduceジョブの中で最もコストが高いフェーズです。
Q2. SparkでデータスキューがJOIN性能に影響を与える場合の最も効果的な対策はどれですか?
- A) パーティション数を増やす
- B) Saltingでキーにランダム値を付与して分散させる
- C) キャッシュを有効にする
- D) シリアライゼーション形式を変更する
答えを見る
正解: B
データスキュー(特定キーにデータが偏る)の場合、Saltingが効果的です。偏っているキーにランダム値を付与してパーティションを分散させ、部分集約後にSaltを除去して最終集約します。Spark 3.xのAQE(Adaptive Query Execution)でも自動的にスキュー対応が行われます。
Q3. ストリーム処理における「ウォーターマーク」の目的はどれですか?
- A) メッセージの暗号化
- B) 「この時刻以前のイベントは全て到着済み」という目安を定義し、遅延データの許容範囲を設定する
- C) コンシューマーの処理速度を制御する
- D) メッセージの重複を排除する
答えを見る
正解: B
ウォーターマークは「この時刻以前のデータは全て到着済み」と見なすための基準です。ネットワーク遅延等で遅れて到着するデータ(レイトデータ)の許容範囲を定義します。ウォーターマークを過ぎたウィンドウの結果を確定し、下流に出力できます。
Q4. ETLではなくELTを採用すべき状況はどれですか?
- A) データ変換が極めて複雑でプログラミング言語での処理が必要な場合
- B) クラウドDWH(BigQuery/Snowflake)の計算能力を活用して大量データをSQLで変換する場合
- C) データ量が少なく、単一サーバで処理できる場合
- D) リアルタイム変換が必要な場合
答えを見る
正解: B
ELTはデータをまずDWHにロードし、DWHの強力な計算能力でSQLベースの変換を行うアプローチです。BigQuery、Snowflake等のクラウドDWHはスケーラブルな計算リソースを提供するため、大量データの変換に適しています。dbtがELTの変換レイヤーとして広く使われています。
Q5. dbtのモデル階層で「staging」レイヤーの主な役割はどれですか?
- A) ビジネスロジックの適用
- B) 生データのクレンジング(型変換、NULL処理、命名統一)
- C) 最終的なダッシュボード用ビューの作成
- D) 機械学習用の特徴量生成
答えを見る
正解: B
Stagingレイヤーは生データ(rawデータ)に対して型変換、NULL処理、カラム名の統一(snake_case化等)、基本的なフィルタリングを行います。ビジネスロジックは含めず、ソースごとに1
。ビジネスロジックはintermediateやmartsで適用します。Q6. Exactly-once セマンティクスを外部データベースへの書き込みで実現する最も実用的なパターンはどれですか?
- A) メッセージをキャッシュして重複を除去する
- B) 冪等なUPSERT + 処理済みオフセットの記録をアトミックに行う
- C) コンシューマーを1つだけに制限する
- D) メッセージにシーケンス番号を付与する
答えを見る
正解: B
外部DBへの書き込みでExactly-onceを実現するには、処理結果のUPSERT(冪等な書き込み)と処理済みオフセットの記録を同一トランザクション内で行います。リプレイ時に同じメッセージが再処理されても、冪等性により結果が変わりません。
Q7. データコントラクトで「BACKWARD互換性」が保証する内容はどれですか?
- A) 新しいプロデューサーが古いコンシューマーのデータを読める
- B) 古いコンシューマーが新しいバージョンのデータを問題なく読める
- C) プロデューサーとコンシューマーが同時にアップデートされる
- D) スキーマの変更が完全に禁止される
答えを見る
正解: B
BACKWARD互換性は「新しいスキーマで生成されたデータを、古いスキーマを期待するコンシューマーが問題なく読める」ことを保証します。具体的には、フィールドの削除と新規必須フィールドの追加が禁止され、オプショナルフィールドの追加は許可されます。
Q8. パイプラインの品質監視でレコード数の急激な変動を検知するアラートを設定する最も効果的な方法はどれですか?
- A) 固定の上限/下限を設定する
- B) 前回実行との偏差率を計算し、閾値を超えた場合にアラートする
- C) レコード数が0の場合のみアラートする
- D) 手動で毎日確認する
答えを見る
正解: B
前回実行との偏差率(例: ±50%以上で警告)を使うと、ビジネスの成長によるデータ量の自然な増加に対応しつつ、異常な変動(データソース障害、バグによる大量レコード等)を検知できます。固定値だとビジネス成長に合わせた頻繁な調整が必要になります。
結果
7問以上正解の場合
合格です。 データパイプライン設計の知識が定着しています。
「データの流れを制御する力がついたな。次は分析基盤の構築 — DWHやデータレイクの設計に進もう」 — 佐藤CTO
6問以下の場合
もう少し復習しましょう。
- Q1-Q2を間違えた場合 → Step 2-1「バッチ処理アーキテクチャ」を復習
- Q3を間違えた場合 → Step 2-2「ストリーム処理アーキテクチャ」を復習
- Q4-Q5を間違えた場合 → Step 2-3「ETL/ELTパイプライン設計」を復習
- Q6-Q8を間違えた場合 → Step 2-2 と Step 2-4「データ品質」を復習