データサイエンティスト検定 リテラシーレベル 問題集

DS検定★(データサイエンティスト検定 リテラシーレベル)対策スキルチェックリスト ver.6(2025年12月公開)・リテラシーレベル モデルカリキュラム(2024年2月改訂)準拠

データサイエンティスト検定 リテラシーレベルの日本語問題集。全180問に解説つき。模擬試験は100問・100分です。

データサイエンティスト検定 リテラシーレベル 無料問題 6 / 10 ・ 分野3: データエンジニアリング

Spark で巨大なログから ERROR を含む行を filter した RDD を作る処理を書いて実行したところ、数百ギガバイトのログなのに一瞬で終わった。この理由として正しい説明はどれか。

  1. filter は、ドライバープログラムの手元にある先頭の一部の行に適用され、ほかの行は処理の対象にならないから
  2. filter は処理を記録しておき、count や collect などのアクションが結果を求めた時点で計算されるから
  3. filter の結果は前回の実行時にクラスタのメモリへ保存されており、その保存済みの結果を読み出しただけだから
  4. filter は、各ノードへ処理を配る際に使う命令なので、実際に行を絞り込む処理は ERROR の行ごとに非同期で終わるから
正解と解説を見る

正解: B

正解の理由
Spark の RDD プログラミングガイドは「Spark のすべての transformation は遅延評価(lazy)である」と述べる。結果をすぐに計算せず、元のデータセットに適用した処理を覚えておき、アクションが結果をドライバープログラムに返す必要があるときに初めて計算する。この設計により、たとえば map した巨大なデータセットを返さず、reduce の結果だけを返す、といった効率のよい実行ができる。そのため filter だけを書いて実行しても、計算は動かず一瞬で終わる。

違う選択肢
「filter は、ドライバープログラムの手元にある先頭の一部の行に適用され、ほかの行は処理の対象にならないから」… transformation は RDD 全体への処理として記録される。先頭の一部に限って実行するのではなく、実行を後ろへ回しているのである。アクションが来れば全体が処理される。
「filter の結果は前回の実行時にクラスタのメモリへ保存されており、その保存済みの結果を読み出しただけだから」… 保存するには persist や cache を明示的に呼ぶ必要がある。呼ばずに速かった理由は、保存ではなく計算がまだ行われていないことである。
「filter は、各ノードへ処理を配る際に使う命令なので、実際に行を絞り込む処理は ERROR の行ごとに非同期で終わるから」… 絞り込みの実行はアクションの時点で行われる。非同期に先行して終わっているわけではない。実際に動かすと、そこから時間がかかる。

押さえどころ
transformation(map・filter など)は処理を記録するだけで、アクション(count・collect・reduce など)で初めて動く。実行が速すぎるときは、まだ計算されていないことを疑う。

データサイエンティスト検定 リテラシーレベルの演習アプリ(無料10問・全問は購入で)へ

問題集(note)を見る