Databricks

Databricks Spark Developer完全解説|DataFrame API・Spark SQL対策

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

Databricks Certified Associate Developer for Apache Spark(通称Spark Developer)は、 PySpark / Scala によるDataFrame API・Spark SQLの実装力を測定する認定試験です。 Delta LakeやUnity Catalogは範囲外で、純粋なApache Spark APIの深い知識が問われます。 コード問題が全体の30〜35%を占めるため、APIリファレンスの読み込みと実装演習が合格の鍵です。

試験概要

項目内容
試験名Databricks Certified Associate Developer for Apache Spark
問題数45問
試験時間90分(1問あたり平均2分)
合格ライン70%(32問以上正解)
受験料$200(税別)
言語英語のみ
言語選択Python(PySpark)またはScala を受験登録時に選択
有効期間2年間
コード問題比率約30〜35%(14〜16問)

英語のみの試験のため、問題文・選択肢・コードスニペットはすべて英語で出題されます。技術用語はそのまま英語で理解しておくと読み取り速度が上がります。

7つの出題ドメインと配点

ドメイン配点出題数目安
Spark Architecture17%7〜8問
DataFrame API17%7〜8問
Spark SQL13%5〜6問
Data Sources13%5〜6問
Higher-order Functions13%5〜6問
Structured Streaming13%5〜6問
Testing & Performance14%6〜7問

ドメイン1: Spark Architecture(17%)

Sparkの内部動作を理解しているかを問います。コードではなく概念の選択問題が中心です。

  • Driver / Executor モデルDriverがSparkSessionを保持しジョブ計画を立て、ExecutorがTask単位で並列実行する。Executorのメモリ不足(OOM)が発生した場合の対処法(パーティション数増加、メモリ設定変更)
  • Lazy EvaluationTransformation(select, filter, groupBy等)はActionが呼ばれるまで実行されない。 explain()で論理プランと物理プランを確認する方法
  • Narrow vs Wide TransformationNarrow(map, filter:パーティション内で完結、シャッフル不要)とWide(groupBy, join, repartition:シャッフル発生)の区別
  • Catalyst Optimizer論理プラン → 最適化論理プラン → 物理プラン → コード生成の4段階。Predicate Pushdown(フィルタの早期適用)、Column Pruning(不要列の除外)、Constant Folding(定数式の事前計算)が頻出の最適化ルール
  • Adaptive Query Execution(AQE)実行時統計に基づくジョイン戦略の動的変更、パーティションのコアレス、スキュー分割を自動で行う。Databricksではデフォルト有効

ドメイン2: DataFrame API(17%)

配点が最も高いドメインの一つです。PySpark DataFrame APIの主要メソッドの引数・戻り値・挙動を正確に理解しているかが問われます。

頻出APIと出題パターン

  • select / withColumndf.select("col1", "col2")は列の絞り込み、df.withColumn("new_col", expr)は列の追加・変換。selectは既存列のみ返し、withColumnは全列+新列を返す違い
  • filter / wheredf.filter(col("age") > 30)df.where("age > 30")は同義。複数条件の結合には&(AND)、|(OR)を使い、各条件を括弧で囲む
  • groupBy / aggdf.groupBy("dept").agg(count("*"), avg("salary"))で集約関数を複数適用する。aggなしのgroupBy().count()との違い
  • joindf1.join(df2, "key", "inner")の第3引数でjoin typeを指定。inner / left / right / outer / cross / semi / anti の7種類。semi joinは右テーブルの列を返さず、anti joinは不一致行のみ返す
  • Window関数Window.partitionBy("dept").orderBy("salary")を定義し、row_number()rank()dense_rank()lag()lead()を適用する。row_numberは同順位でも連番、rankは同順位で同番号+欠番、dense_rankは欠番なし

ドメイン3: Spark SQL(13%)

  • spark.sql("SELECT ...")の戻り値はDataFrame。createOrReplaceTempView("view_name")でDataFrameをSQLからアクセス可能にする
  • SQL組み込み関数:COALESCENULLIFCASE WHENCAST、日付関数(date_adddatediffdate_format
  • サブクエリ:相関サブクエリ(EXISTS)と非相関サブクエリ(IN)の違いと実行計画への影響

ドメイン4: Data Sources(13%)

  • spark.read.format("csv").option("header", "true").option("inferSchema", "true")でCSV読み込み。JSON・Parquet・ORC・Avroの読み書き方法と各フォーマットの特徴
  • スキーマ定義StructTypeStructFieldで明示的にスキーマを指定する方法。inferSchemaのオーバーヘッド(全データスキャン)を避ける目的
  • パーティション分割書き込みdf.write.partitionBy("year", "month")でデータをディレクトリ構造に分割。過剰なパーティション分割(高カーディナリティ列の指定)がもたらす小ファイル問題
  • 書き込みモードappend(追記)、overwrite(上書き)、error/errorifexists(デフォルト、既存テーブルがあればエラー)、ignore(既存テーブルがあれば何もしない)の4モード

ドメイン5: Higher-order Functions(13%)

配列(ArrayType)やマップ(MapType)に対するラムダ関数操作が出題されます。Spark 3.0以降で追加された関数群で、他のドメインと比べて学習者の盲点になりやすい分野です。

  • transform:配列の各要素にラムダ関数を適用。transform(array_col, x -> x * 2)で全要素を2倍にする
  • filter:配列から条件に合う要素のみ抽出。filter(array_col, x -> x > 0)で正の要素のみ残す
  • exists:配列内に条件を満たす要素が存在するかをBooleanで返す。exists(array_col, x -> x == "target")
  • aggregate:配列の要素を畳み込み演算で集約。初期値とラムダ関数を指定して、配列の合計や結合文字列を計算する

ドメイン6: Structured Streaming(13%)

  • spark.readStream.format("rate")format("socket")でテスト用ストリームを作成する方法
  • 出力モードappend(新規行のみ出力、集約なしのストリーム向け)、complete(全結果を毎回出力、集約ありのストリーム向け)、update(変更行のみ出力)の3モード
  • ウォーターマークwithWatermark("timestamp", "10 minutes")で遅延データの許容範囲を設定。ウォーターマークを超えた遅延データは破棄される
  • Trigger設定trigger(processingTime="5 seconds")(マイクロバッチ間隔指定)、trigger(availableNow=True)(全データを処理して停止)

ドメイン7: Testing & Performance(14%)

  • ブロードキャスト変数broadcast_var = sc.broadcast(lookup_dict)で全Executorに読み取り専用データを配布。大きな辞書やルックアップテーブルに使用
  • アキュムレータacc = sc.accumulator(0)で分散環境での集計カウンタを作成。Transformationの中でaccumulatorを更新した場合、Actionの再実行で値が増加する問題
  • repartition vs coalescerepartitionはフルシャッフルでパーティション数を増減。coalesceはシャッフルなしでパーティション数を減少のみ。書き込み前のファイル数調整にはcoalesceが推奨
  • キャッシュ戦略df.cache()(メモリのみ)とdf.persist(StorageLevel.MEMORY_AND_DISK)の違い。同じDataFrameを複数回参照する場合にキャッシュが有効

PySpark vs Scala:言語選択の判断基準

観点PySparkScala
学習リソース豊富(公式Doc・Qiita・YouTube)限定的
実務での利用率80%以上のDatabricksユーザーが使用20%未満
型安全性動的型付け(実行時エラー)静的型付け(コンパイル時エラー)
パフォーマンスDataFrame APIはScalaと同等RDD操作はPySparkより高速
試験対策の難易度低い(サンプルが多い)高い(サンプルが少ない)

問題で確認

Databricks

問題 1

PySparkで100GBのDataFrame(df_large)と50MBのDataFrame(df_small)をinner joinする場合、最もパフォーマンスが高いアプローチはどれですか?

  1. df_large.join(df_small, 'key', 'inner') をそのまま実行し、Catalyst Optimizerに最適化を任せる
  2. from pyspark.sql.functions import broadcast を使い、df_large.join(broadcast(df_small), 'key', 'inner') でbroadcast hash joinを明示的に指定する
  3. df_large.repartition('key').join(df_small.repartition('key'), 'key', 'inner') で両方をキー列でパーティション分割してからjoinする
  4. df_large.cache() と df_small.cache() を実行してから df_large.join(df_small, 'key', 'inner') を実行する

正解: B

50MBのDataFrameは十分に小さいため、broadcast()ヒントを使ってbroadcast hash joinを明示的に指定するのが最もパフォーマンスが高くなります。broadcast hash joinではdf_smallを全Executorにコピーし、シャッフルなしでjoinを実行するため、ネットワーク転送量が大幅に削減されます。選択肢AではCatalyst/AQEが自動でbroadcast joinを選択する可能性はありますが、spark.sql.autoBroadcastJoinThresholdのデフォルト値は10MBのため、50MBのテーブルは自動broadcastの対象外です。明示的なbroadcastヒントが確実です。選択肢Cのrepartitionは両テーブルでフルシャッフルが発生し、100GBのデータ移動が生じるため非効率です。選択肢Dのcacheはjoin自体の戦略を変えないため、パフォーマンス改善効果は限定的です。

よくある質問

Spark Developer試験はPySparkとScalaのどちらで受験すべきですか?

受験登録時にPythonまたはScalaを選択し、選んだ言語でコード問題が出題されます。現在のDatabricksエコシステムではPySparkが主流であり、公式ドキュメント・Academy・コミュニティの学習リソースもPython版が圧倒的に多いため、特別な理由がなければPySparkを選択することを推奨します。Scalaは型安全性やパフォーマンスの利点がありますが、学習コストが高く、試験対策用のサンプルコードも少ないのが現状です。

コード問題の比率と対策方法を教えてください

コード問題は全体の30〜35%(約14〜16問)を占めます。DataFrame APIの操作(filter/select/groupBy/join/withColumn)、Window関数、Higher-order Functions(transform/filter/exists)、Structured StreamingのreadStream/writeStreamが出題されます。コードの実行結果を問う形式が多いため、PySpark APIの戻り値の型と挙動を正確に把握しておくことが必要です。Community Editionでコードを実際に動かしながら学習するのが最も効果的です。

Spark Developer試験の難易度はData Engineer Associateと比べてどうですか?

DEAがDatabricksプラットフォーム全体を広く浅く問うのに対し、Spark DeveloperはSpark/PySpark APIの深い理解に特化しています。Delta Lake・Unity Catalog・Workflowsは出題されず、純粋なSpark APIの知識が問われます。コード問題の比率がDEA(10〜15%)より高い(30〜35%)ため、APIリファレンスの読み込みとハンズオン演習が必須です。英語のみの試験であることも難易度を上げる要因です。

Databricks資格の関連記事

Data Engineer Associate 完全解説

Spark の知識がそのまま活きる Associate

PySpark 完全ガイド

DataFrame API と内部動作

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

全 7 試験を学習時間とともに比較

Databricks 資格一覧

出題範囲と合格ラインを一望

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

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.