はじめに
Databricks未経験者の私が、勉強してから3日間で、Databricks Certified Data Engineer Associateに合格することができたので、勉強方法やコツをシェアしていきたいと思います。
スペック
- Python:10年以上
- SQL/Spark:読み書きの経験あり
- 資格:AWS認定資格12冠
Databricksを触ったことがありませんが、データサイエンティストとして分析基板系の案件の経験とAWSの認定資格の中でビッグデータ関連の扱い方の勉強経験はありました。
試験概要
- 問題数:45問
- 制限時間:90分
- 実施方法:オンライン試験/テストセンター
- 受験料:200ドル
他の方々の合格体験記では、オンライン試験のみが多かったですが、テストセンター方式にも対応したようです。
使用教材
- Udemy
- 日本語版 Databricks Data Engineer Associate オリジナル問題集(90問)
- Databricks 認定データエンジニア アソシエイト 模擬試験(225問)
- 模擬問題
- Databricks認定データエンジニアアソシエイト公式練習問題を翻訳&解説してみた
- Databricks認定データエンジニアアソシエイト公式練習問題 翻訳&解説 質問31以降
公式ページやサービスには触れず、問題集を中心に対策しました。
模擬問題については、以前は公式で公開されていたようですが、非公開となっていましたので、模擬問題の解説をされている記事を参考にしました。Udemyは、2つ教材を購入しましたが、問題のボリュームが少ないので日本語版は不要でした。
抑えておくポイント
全然足りないですけど、最低限以下、要所のまとめです。
Lakehouseプラットフォーム
Delta Lake
- ACIDトランザクション
- スキーマの強制と進化に対応
- 非構造化/構造化スキーマに対応
- BIサポート
- コンピューティングをもたない
- オープンフォーマット
- バッチ分析・ストリーミング分析可能
- End2Endのストリーミング対応
Delta Table
- 構造
- 複数のParquet+複数のJSONログ
- パフォーマンス改善
- OPTIMIZE
- 小さいファイルをマージして大きなファイルにする
- Z-order
- クエリ速度を上げるために利用
- OPTIMIZE
- VACUUM
- 期間外のデータを削除する
- デフォルトは7日
クラスター
- 障害対応
- クラスターイベントログを確認
- パフォーマンス改善
- クラスタープール機能
- 起動時間を短縮
- 高同時実行モード
- 複数ユーザーが使用する場合の速度UPで使用
- クラスタープール機能
項目 | All-purpose クラスター | Job クラスター |
---|---|---|
主な用途 | インタラクティブ開発 / 分析 | バッチ処理 / スケジュール実行 |
起動 | 手動起動、長時間利用 | ジョブ実行時に自動作成、終了時に破棄 |
コスト | 長時間稼働するためコスト高め | 必要な時だけ起動するのでコスト効率良い |
共有 | Notebook を複数ユーザーで共有可能 | 通常はジョブ実行専用、共有前提ではない |
Databricks Repos
- 可能なGit操作
- Pull, Push, Commit, Branch作成
データプレーン/コントロールプレーン
項目 | コントロールプレーン (Control Plane) | データプレーン (Data Plane) |
---|---|---|
役割 | サービス全体の管理・制御 | 実際のデータ処理と保存 |
主な機能 | - ユーザー認証/認可 - ワークスペース UI(Webアプリ) - クラスターやジョブの管理 - メタデータ/設定の管理(Unity Catalogなど) - APIエンドポイント提供 |
- Spark クラスターの実行 - Notebook・ジョブの処理 - データの読み書き - ストレージアクセス |
生産パイプライン
ジョブページから構成管理のJSONをダウンロード可能
- 並列実行(ユーザー数、ジョブ数)
- SQL円dポイントのスケーリング範囲を増やす
- 直列実行(ジョブに依存あり)
- クラスターサイズを上げる
- 線形依存関係を使用
- ノートブック、DLTパイプラインの設定が可能
- コスト削減
- 自動停止機能ON(SQLエンドポイント)
- ジョブ作成時のタグを使用したコスト追跡
- タスクのタイムアウト設定
- 自動化
- SQLクエリページ/ジョブUI/ダッシュボードからスケジューリング(CRON)
- 再試行ポリシーの追加
- アラート
- メール、Webhook、Teams
- カスタムテンプレートの提供
増分データ管理
ワークロード
- Bronze
- 生データ
- Silver
- クレンジング済みデータ
- ETLスループットと分析クエリのパフォーマンスを最適化
- Gold
- 集計データ
- アプリ、ダッシュボード等で読み込み
Delta Live Table
データパイプライン処理に利用。トリガーと継続モード
- EXPECT (timestamp > '2020-01-01')
- レコード追加。無効として記録
- EXPECT (timestamp > '2020-01-01') ON VIOLATION DROP ROW
- レコード削除。無効として記録
- EXPECT (timestamp > '2020-01-01') ON VIOLATION FAIL
- 失敗
AutoLoader
増分処理に利用。構造化ストリーミングがベース。スキーマの推論・進化、ディレクトリ一覧、ファイル通知。
- リアルタイム/継続的取り込み → AUTO LOADER
- 履歴データの初回ロード や たまに発生するバッチインポート → COPY INTO
- 両方を組み合わせるケースも多い
(初回は COPY INTO で過去データ → 以降は AUTO LOADER で増分)
Streaming
Order byが使えない(Group byを除く)
spark.readStream
.format("cloudfiles")
.option("cloudfiles.format","csv")
.option("cloudfiles.schemalocation", "dbfs:/location/checkpoint/")
.load(data_source)
.writeStream
.option("checkpointlocation","dbfs:/location/checkpoint/")
.option("mergeSchema", "true")
.table(table_name)) # target table
- 追加モード(デフォルト)
- 単純な行追加
- 完全モード
- 集計クエリに対応
- 更新モード
- 更新された行のみ
データガバナンス
Unity カタログ(権限管理)
- 対応リソース
- テーブル、MLモデル、ダッシュボード、メタストア、カタログ
- オブジェクト順序
- メタストア、カタログ、スキーマ、テーブル(ビュー)
アクセス制御
- ダイナミックビュー
- ユーザーアクセスに基づいた行列のきめ細かなアクセス制御
- GRANT
- USAGE: 下記権限を付与する前に、これが必要
- SELECT: オブジェクトへの読み取りアクセス権
- CREATE: オブジェクト (スキーマ内のテーブルなど) を作成する権限
- MODIFY: オブジェクトに対してデータの追加、削除、変更を行う権限
- DELETE,UPATEの権限は存在しない
ELT
テーブル作成
デフォルトが管理テーブル。Locaitionを指定すると外部
CREATE TABLE my_table (
id INT,
name STRING
)
USING delta
LOCATION 'dbfs:/mnt/data/my_table';
データ挿入
INSERT INTO my_table VALUES (1, 'Alice'), (2, 'Bob');
データ取得
SELECT * FROM my_table WHERE id = 1;
テーブル削除
DROP TABLE my_table;
データ更新
-- 行削除
DELETE FROM my_table WHERE id = 1;
-- 行更新
UPDATE my_table
SET name = 'Charlie'
WHERE id = 2;
-- アップサート(更新+挿入)
MERGE INTO target t
USING source s
ON t.id = s.id
WHEN MATCHED THEN UPDATE SET t.name = s.name
WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);
集計・条件
SELECT department, COUNT(*) AS cnt, AVG(salary) AS avg_salary
FROM employees
WHERE salary > 50000
GROUP BY department
HAVING cnt > 10
ORDER BY avg_salary DESC;
テーブル管理
DESCRIBE DETAIL my_table; -- Deltaのメタ情報
DESCRIBE HISTORY my_table; -- 履歴(タイムトラベル用)
OPTIMIZE my_table; -- 小ファイル統合
VACUUM my_table RETAIN 168 HOURS; -- 古いファイル削除
タイムトラベル
SELECT * FROM my_table VERSION AS OF 5;
SELECT * FROM my_table TIMESTAMP AS OF '2025-08-01T00:00:00Z';
ストリーミング
接頭語にLIVE.が必要
CREATE OR REFRESH STREAMING LIVE TABLE new_sales
AS SELECT *, price * quantity AS total_price
FROM STREAM(LIVE.sales);
スケジュール
- 1日目
- 問題集:1周目(8時間程度、正答率6割弱)
- 試験申込
- 2日目
- 問題集:2週目(4時間程度、正答率8割強)
- 問題集:3週目(2時間程度、正答率9割強)
- 3日目
- 問題集をそれぞれ間違えたところのみ復習(1時間程度)
- 受験完了
1日目で、模擬問題集から解き始めて、試験の感覚がAWSの時と似ていたので、2~3週すれば合格できるだろうと予測し、最短日で申し込める日程の試験を申し込み。
問題を解きながら、わからないサービスの名称や用途については、公式ページを使わずにChatGPTに聞きながら理解を進めました。
申し込み方法
通常200ドルかかりますが、Databricksパートナーの場合、バウチャーを発行してもらうことが可能です。
こちらからユーザ登録をして試験を申し込みます。
https://webassessor.com/databricks
日本語での受験が可能で、オンラインかオンサイトを選択できます。
受験場所は、AWSと比較すると少なく、区の表記に揺れがあるので注意が必要です。
Toshima Cityと Toshima-kuで、違う会場が登録されていたり、Tokyoの中に新宿区の会場が登録されています。
バウチャーの発行方法(Databricksパートナー限定)
- ヘルプセンターにアクセス(https://help.databricks.com/s/contact-us?ReqType=training)
- フォームを入力し件名とメッセージを入力
- Subject: “Partner Certification Voucher Request”
- Message: please type “I work for [Partner name] and would like to request a certification voucher for [Certification Name]”.
※ 当然パートナーで登録されているメールアドレスと同じドメインのアドレスを入力しないとだめです。
Submitしてから12時間ほどバウチャーの連絡が来ました。
試験結果
当日
テストセンターにて受験をしました。
身分証2枚が必要なことは過去AWSで知っていたので、準備済みで問題ありませんでした。
しかし、Authentication codeの記載に焦りました。AWSと違って試験の予約状況等がメールで通知されていなかったため、受験申込サイトのMy Assessmentsから試験詳細を開いてコードを確認しました。
試験中
AWSと似たような形で90分45問の選択形式の試験を受けます。
ただ、言語の表示が日本語⇔英語の切り替えができないため、例によって日本語が機械翻訳された文章であるため、問題文や解答が分かりづらいとき苦戦しました。
問題自体は、模擬問題で見たことあるものが多く30問くらいは自信をもって回答できたので、安心しました。30分ほどで解き終わり、10分ほどでフラグを付けた問題を見直して提出しました。
結果
無事合格することができました。
結果を送信したら、その場で合否を確認することができました。
点数はわかりませんでしたが、全体で9割近く取れていたので、やはりUdemyの日本語問題集は不要でした。
感想
初めて、Databricksの試験を受験しましたが、合格の要領はAWSと同じ感触で、実際のサービスや公式に触れず、問題集を2~3周解きながら、不明点を調べる方法をとることで、
短期間で合格することができました。
難易度でいうと、サービスの範囲が狭いためAWS SAより少し下かなと思いました。
せっかくなので、Databricksでも資格の全冠も時間があれば目指してみたいと思います。