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問) |
英語のみの試験のため、問題文・選択肢・コードスニペットはすべて英語で出題されます。技術用語はそのまま英語で理解しておくと読み取り速度が上がります。
| ドメイン | 配点 | 出題数目安 |
|---|---|---|
| Spark Architecture | 17% | 7〜8問 |
| DataFrame API | 17% | 7〜8問 |
| Spark SQL | 13% | 5〜6問 |
| Data Sources | 13% | 5〜6問 |
| Higher-order Functions | 13% | 5〜6問 |
| Structured Streaming | 13% | 5〜6問 |
| Testing & Performance | 14% | 6〜7問 |
Sparkの内部動作を理解しているかを問います。コードではなく概念の選択問題が中心です。
配点が最も高いドメインの一つです。PySpark DataFrame APIの主要メソッドの引数・戻り値・挙動を正確に理解しているかが問われます。
df.select("col1", "col2")は列の絞り込み、df.withColumn("new_col", expr)は列の追加・変換。selectは既存列のみ返し、withColumnは全列+新列を返す違いdf.filter(col("age") > 30)とdf.where("age > 30")は同義。複数条件の結合には&(AND)、|(OR)を使い、各条件を括弧で囲むdf.groupBy("dept").agg(count("*"), avg("salary"))で集約関数を複数適用する。aggなしのgroupBy().count()との違いdf1.join(df2, "key", "inner")の第3引数でjoin typeを指定。inner / left / right / outer / cross / semi / anti の7種類。semi joinは右テーブルの列を返さず、anti joinは不一致行のみ返すWindow.partitionBy("dept").orderBy("salary")を定義し、row_number()、rank()、dense_rank()、lag()、lead()を適用する。row_numberは同順位でも連番、rankは同順位で同番号+欠番、dense_rankは欠番なしspark.sql("SELECT ...")の戻り値はDataFrame。createOrReplaceTempView("view_name")でDataFrameをSQLからアクセス可能にするCOALESCE、NULLIF、CASE WHEN、CAST、日付関数(date_add、datediff、date_format)spark.read.format("csv").option("header", "true").option("inferSchema", "true")でCSV読み込み。JSON・Parquet・ORC・Avroの読み書き方法と各フォーマットの特徴StructTypeとStructFieldで明示的にスキーマを指定する方法。inferSchemaのオーバーヘッド(全データスキャン)を避ける目的df.write.partitionBy("year", "month")でデータをディレクトリ構造に分割。過剰なパーティション分割(高カーディナリティ列の指定)がもたらす小ファイル問題append(追記)、overwrite(上書き)、error/errorifexists(デフォルト、既存テーブルがあればエラー)、ignore(既存テーブルがあれば何もしない)の4モード配列(ArrayType)やマップ(MapType)に対するラムダ関数操作が出題されます。Spark 3.0以降で追加された関数群で、他のドメインと比べて学習者の盲点になりやすい分野です。
transform(array_col, x -> x * 2)で全要素を2倍にするfilter(array_col, x -> x > 0)で正の要素のみ残すexists(array_col, x -> x == "target")spark.readStream.format("rate")やformat("socket")でテスト用ストリームを作成する方法append(新規行のみ出力、集約なしのストリーム向け)、complete(全結果を毎回出力、集約ありのストリーム向け)、update(変更行のみ出力)の3モードwithWatermark("timestamp", "10 minutes")で遅延データの許容範囲を設定。ウォーターマークを超えた遅延データは破棄されるtrigger(processingTime="5 seconds")(マイクロバッチ間隔指定)、trigger(availableNow=True)(全データを処理して停止)broadcast_var = sc.broadcast(lookup_dict)で全Executorに読み取り専用データを配布。大きな辞書やルックアップテーブルに使用acc = sc.accumulator(0)で分散環境での集計カウンタを作成。Transformationの中でaccumulatorを更新した場合、Actionの再実行で値が増加する問題df.cache()(メモリのみ)とdf.persist(StorageLevel.MEMORY_AND_DISK)の違い。同じDataFrameを複数回参照する場合にキャッシュが有効| 観点 | PySpark | Scala |
|---|---|---|
| 学習リソース | 豊富(公式Doc・Qiita・YouTube) | 限定的 |
| 実務での利用率 | 80%以上のDatabricksユーザーが使用 | 20%未満 |
| 型安全性 | 動的型付け(実行時エラー) | 静的型付け(コンパイル時エラー) |
| パフォーマンス | DataFrame APIはScalaと同等 | RDD操作はPySparkより高速 |
| 試験対策の難易度 | 低い(サンプルが多い) | 高い(サンプルが少ない) |
Databricks
問題 1
PySparkで100GBのDataFrame(df_large)と50MBのDataFrame(df_small)をinner joinする場合、最もパフォーマンスが高いアプローチはどれですか?
正解: 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リファレンスの読み込みとハンズオン演習が必須です。英語のみの試験であることも難易度を上げる要因です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...