Databricks

Databricks Spark問題集|DataFrame API・アーキテクチャの練習問題

2026-03-21
更新: 2026-03-27
NicheeLab編集部

Databricks Apache Spark Developer Associate試験は、 SparkのコアアーキテクチャからDataFrame API・Spark SQL・Structured Streamingまで Apache Sparkの実践的なコーディングスキルを問う試験です。 この記事では7つの出題ドメインと配点表を示した上で、コード問題の特徴と攻略法を解説し、 代表ドメインから練習問題3問を掲載しています。

Spark Developer試験の7ドメインと配点

Spark Developer Associate試験は45問・120分で、以下の7ドメインから出題されます。コード読解を含む問題が全体の30〜35%を占めるのが他のDatabricks試験との大きな違いです。

ドメイン配点比率主なトピック
DataFrame API & Spark SQL約25%select・filter・groupBy・join・withColumn・ウィンドウ関数
Sparkアーキテクチャ約15%Driver/Executor・ジョブ/ステージ/タスク・Narrow/Wide Transformation
Catalyst & Tungsten約12%論理計画・物理計画・述語プッシュダウン・カラムプルーニング・AQE
データ読み書き約13%DataFrameReader/Writer・Parquet/CSV/JSON・スキーマ推論・パーティション
Structured Streaming約13%readStream/writeStream・出力モード・ウォーターマーク・トリガー
パフォーマンス最適化約12%キャッシュ・ブロードキャストジョイン・パーティション数・データスキュー対策
Delta Lake基礎約10%ACIDトランザクション・Time Travel・スキーマ進化・基本的なDML

コード問題の特徴と攻略法

Spark Developer試験では全45問中14〜16問がコード問題です。他のDatabricks試験(DEA・MLA等)のコード問題比率(約15〜20%)より高く、APIの正確な知識と実行結果のイメージ力が合否を分けます。

コード問題の3パターン

  • 出力予測型:完成コードの実行結果(出力行数・カラム名・値)を選ぶ。groupBy → agg → showのような変換チェーンの最終結果を正確に追えるかが問われます。
  • 空欄補完型:コードの一部が空欄(___)になっており、正しいメソッド名・引数・オプションを選ぶ。withColumn / when / otherwise / col / lit などの使い分けが頻出です。
  • エラー発見型:4つのコードスニペットのうち実行時エラーになるものを選ぶ。型不一致・存在しないカラム参照・immutableなDataFrameへの操作誤りなどが題材です。

攻略のポイント

コード問題を確実に正答するためのポイントは3つあります。

  • Lazy Evaluationの理解:Transformationはアクションが呼ばれるまで実行されない。select/filter/groupByだけでは何も実行されず、show/collect/writeで初めて計算が走る点を意識する。
  • Narrow vs Wide Transformationの区別:どの操作でシャッフルが発生するかを即座に判断できる力。Narrow(select・filter・map・withColumn)、Wide(groupBy・join・distinct・repartition・orderBy)。
  • DataFrameのimmutability:df.withColumn()は新しいDataFrameを返し、元のdfは変更されない。df.withColumn(...)の結果を変数に代入しないと変換が反映されない点がエラー発見型で頻出。

各ドメインの代表出題パターン

DataFrame API — 変換チェーンの結果予測

select → filter → groupBy → agg → orderByのような変換チェーンを読み、最終的なDataFrameのスキーマと行数を予測する問題が最頻出です。特にgroupByの集計結果の行数(ユニークキーの数)と、aggで指定した集計関数(count・sum・avg・max・min)の結果カラム名がポイントになります。

Catalyst Optimizer — 実行計画の最適化ルール

Catalystが適用する代表的な最適化ルールを問う問題が出題されます。述語プッシュダウン(フィルタ条件をデータソース読み込み時に適用)、カラムプルーニング(不要カラムの読み込みを省略)、定数畳み込み(コンパイル時に定数式を評価)、ジョイン順序の最適化(小テーブルを先にブロードキャスト)が4大ルールです。

Structured Streaming — 出力モードとウォーターマーク

Append / Complete / Updateの3つの出力モードの違いと、ウォーターマークの目的(遅延データの許容範囲定義・ステートのメモリ管理)が頻出です。集約クエリにAppendモードを使うにはウォーターマークが必須という制約も問われます。

ドメイン別 練習問題(3問)

DataFrame API・Catalyst Optimizer・Structured Streamingから各1問を掲載しています。コードを読んで実行結果をイメージしてから選択肢を選びましょう。

DataFrame API

問題 1

以下のPySparkコードの実行結果として正しいものはどれですか? df = spark.createDataFrame( [("Alice", "Sales", 5000), ("Bob", "Sales", 6000), ("Carol", "Eng", 7000), ("Dave", "Eng", 7000)], ["name", "dept", "salary"]) from pyspark.sql.window import Window from pyspark.sql.functions import rank w = Window.partitionBy("dept").orderBy(col("salary").desc()) result = df.withColumn("rnk", rank().over(w)).filter(col("rnk") == 1) result.select("name", "dept").show()

  1. Bobのみが出力される(Sales部門の最高給与)
  2. BobとCarolの2行が出力される(各部門の最高給与者各1人)
  3. BobとCarolとDaveの3行が出力される(Eng部門はrank=1が2人)
  4. エラーが発生する(rank()はpartitionByなしでは使用できない)

正解: C

rank()ウィンドウ関数はpartitionBy('dept')で部門ごとに分割し、salary降順でランクを付けます。Sales部門ではBob(6000)がrank=1、Alice(5000)がrank=2です。Eng部門ではCarolとDaveが同額(7000)のためどちらもrank=1になります。rank()は同順位に同じランクを付与するため、Eng部門からrank=1が2行出力されます。filterでrnk==1を絞り込むと、Bob・Carol・Daveの3行が結果になります。dense_rank()でも同じ結果ですが、row_number()を使った場合は同額でも順序が一意に決まるため2行になります。この違いはSpark Developer試験のウィンドウ関数問題で頻出です。

Catalyst Optimizer

問題 2

以下のSpark SQLクエリに対してCatalyst Optimizerが適用する最適化として正しいものはどれですか? SELECT name, salary FROM employees WHERE dept = 'Engineering' AND salary > 100000

  1. 述語プッシュダウンとカラムプルーニングの両方が適用され、Parquetファイルからdept・name・salaryのみが読み込まれ、deptとsalaryのフィルタがファイルスキャン時に適用される
  2. 述語プッシュダウンのみが適用され、全カラムが読み込まれた後にフィルタが適用される
  3. カラムプルーニングのみが適用され、name・salaryカラムだけが読み込まれるがフィルタは全行スキャン後に適用される
  4. 最適化は行われず、全カラム・全行がスキャンされた後にフィルタとカラム選択が行われる

正解: A

Catalyst Optimizerは複数の最適化ルールを同時に適用します。このクエリでは、(1)カラムプルーニング:SELECTで使用するname・salaryに加え、WHERE句で使用するdeptの3カラムのみをParquetファイルから読み込みます(他のカラムは読み込まない)。(2)述語プッシュダウン:dept='Engineering'とsalary>100000のフィルタ条件をParquetファイルのRow Group統計情報と照合し、条件に合致しないRow Groupをスキップします。この2つの最適化により、不要なI/Oが大幅に削減されます。Parquet形式はカラムナストレージなのでカラムプルーニングの効果が特に高く、Delta LakeテーブルではさらにData Skipping(ファイルレベルの統計情報による除外)も適用されます。

Structured Streaming

問題 3

以下のStructured Streamingコードで、trigger(availableNow=True)を使用した場合の動作として正しいものはどれですか? (spark.readStream .format("cloudFiles") .option("cloudFiles.format", "json") .load("/data/events/") .writeStream .format("delta") .option("checkpointLocation", "/checkpoints/events") .trigger(availableNow=True) .toTable("bronze.events"))

  1. ストリームが常時起動し、新しいファイルが到着するたびにマイクロバッチが実行される
  2. 現在利用可能なすべての未処理ファイルを複数のマイクロバッチで処理し、全ファイル処理完了後にストリームが自動停止する
  3. 利用可能な未処理ファイルを1つのマイクロバッチで一括処理し、ストリームが自動停止する
  4. エラーが発生する(availableNowはcloudFilesフォーマットでは使用できない)

正解: B

trigger(availableNow=True)は、チェックポイント以降の未処理データをすべて処理し、完了後にストリームを自動停止するトリガーモードです。trigger(once=True)と似ていますが、availableNowはデータを複数のマイクロバッチに分割して処理するため、大量の未処理ファイルがある場合でもメモリ不足を防げます。trigger(once=True)は全データを1つのマイクロバッチで処理するためCが該当します。availableNowはcloudFiles(Auto Loader)との組み合わせが特に推奨されており、バッチ的なスケジュール実行(例:毎朝1回Workflowで起動)でストリーミングの増分処理を活用するパターンに最適です。この使い分けはSpark Developer試験で頻出です。

Spark Developer試験の学習戦略

DataFrame APIを手で書いて覚える

コード問題の正答率を上げる最も効果的な方法は、自分でコードを書いて実行することです。Community Editionで小さなサンプルデータを作成し、select・filter・groupBy・join・withColumn・when/otherwise・ウィンドウ関数のコードを実際に書いて結果を確認しましょう。特にウィンドウ関数(rank・dense_rank・row_number・lag・lead)はpartitionByとorderByの組み合わせで結果が変わるため、手を動かして体感する必要があります。

explain()で実行計画を確認する習慣をつける

Catalyst Optimizerの最適化を理解するには、df.explain(True)で論理計画(Parsed / Analyzed / Optimized)と物理計画(Physical Plan)を確認する習慣をつけましょう。述語プッシュダウンが適用されているか、ブロードキャストジョインが選択されているか、実行計画を読めるようになると最適化問題の正答率が大幅に上がります。

Spark UIで実行メトリクスを読む練習

Spark UIのJobs・Stages・SQL/DataFrameタブの読み方を理解しておきましょう。タスクの処理時間分布(データスキューの検出)、シャッフル読み書きのサイズ、キャッシュヒット率、ステージ間のDAGなど、パフォーマンス問題の診断に関する出題があります。

よくある質問(FAQ)

Spark Developer試験のコード問題はPythonとScalaのどちらで出題されますか?

Spark Developer Associate試験はPython版(PySpark)とScala版から受験時に選択できます。問題構成・難易度・合格ラインは同じで、コード問題の言語のみが異なります。PySpark版は受験者数が多く学習リソースも豊富なため、特に実務での言語指定がなければPython版がおすすめです。なお、両方の言語に関する知識が同時に問われることはありません。

Spark Developer試験のコード問題はどのような形式で出題されますか?

コード問題は主に3パターンあります。(1)完成コードの出力結果を予測する問題(例:groupBy→agg→showの結果行数)、(2)空欄補完型(コードの一部が___になっており、正しいメソッド名・引数を選ぶ)、(3)エラー発見型(実行時にエラーになるコードを選ぶ)です。いずれもAPIの仕様を暗記するだけでなく、実行結果をイメージできる力が必要です。Community Editionで実際にコードを動かす練習が効果的です。

Spark Developer試験ではDelta Lakeの問題も出題されますか?

Delta Lakeの基本概念(ACIDトランザクション・Time Travel・スキーマ進化)とDataFrameReaderでのDelta形式の読み書きは出題範囲に含まれます。ただしData Engineer試験ほど深くは問われず、MERGEの複雑な条件分岐・DLT・LakeFlow・Unity Catalogの権限管理などはSpark Developer試験の出題範囲外です。Delta Lake関連はSpark Developer試験全体の約5〜8%程度の出題比率です。

Spark問題集で実力チェック

550問以上の日本語練習問題でSpark Developer合格力を鍛えよう

無料で問題を解く

Databricks Spark の関連記事

Spark Developer 完全ガイド

出題範囲・難易度・対策を徹底解説

Catalyst Optimizer完全解説

実行計画の最適化ルールを網羅

Databricks試験の難易度ランキング

全7試験を難易度順に徹底比較

Databricks無料問題集

6,800問以上の日本語練習問題

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.