Databricks Certified Data Engineer Professional 合格体験記

# はじめに
![Screen Shot 2023-08-14 at 23.33.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383330/16e4a8cb-63bf-fe83-89b7-c1e49a8ed621.png)

本記事では試験に必要なスキルとその対策方法を書いていきます

# 出題される問題
公式の[Exam Guide](https://files.training.databricks.com/static/docs/databricks-certified-data-engineer-professional-exam-guide.pdf?_gl=1*1lnoht*rs_ga*ODBkMzNjMzItZDNhOC00MTNiLTk3MWUtNzk5YTM0NTMwMjA4*rs_ga_PQSEQ3RZQC*MTY5MjAyMjI4NDkxNS4xOS4xLjE2OTIwMjQwMTcuMTIuMC4w*_gcl_au*MTgwNDM2ODEzNS4xNjkxNjQyMzQz&_ga=2.69118417.1906863371.1691827381-1549676738.1691642344)を引用しようとしたら、長かったので要約しました（ChatGPTさんが）。

> セクション1：Databricksツール
Delta Lakeはトランザクションログとクラウドオブジェクトストレージを使用して原子性と耐久性を保証し、楽観的同時実行制御による分離性を提供します。Delta cloneの基本機能や最適化手法（パーティショニング、zorder、bloom filtersなど）を説明し、Deltaテーブルの最適化とデータのパーティショニング戦略についても取り上げます。

> セクション2：データ処理
パーティションヒント（coalesce、repartitionなど）の選択方法、効果的なディスク書き込み手法、1件以上のレコードを更新する戦略、Structured StreamingとDelta Lakeによるデザインパターン、ストリーム静的結合とDelta Lakeの活用、データの重複排除、品質強制、Delta LakeにおけるC‌‌DFの活用、データパーティショニングによるアーカイブと削除方法を解説します。

> セクション3：データモデリング
ブロンズからシルバーへのデータ変換の目的、Change Data Feed（CDF）の役割、Delta Lakeのクローンを用いた学習、マルチプレックスブロンズテーブルの設計、ストリーム処理、品質強制、データ重複の適用、Delta Lakeテーブルの外部キー制約とデータ品質、検索テーブルの実装、SCD Type 0、1、2のテーブル実装について説明します。

> セクション4：セキュリティとガバナンス
ダイナミックビューを使用したデータマスキングとアクセス制御の手法に焦点を当てます。

> セクション5：モニタリングとログ記録
Spark UIの要素やパフォーマンス分析、クラスタのステージとジョブのイベントタイムラインの活用、コストとレイテンシSLAの制御、ストリーミングおよびバッチジョブの展開と監視に関するポイントを説明します。

> セクション6：テストと展開
ノートブックの依存パターンの適用、Pythonファイル依存関係の管理、ジョブの修復と再実行、一般的なジョブとマルチタスクジョブの作成、Databricks CLIとREST APIの使用方法を述べます。

また分野ごとの得点割合は公式サイトに書かれていました。
>試験のカバー範囲は以下の通りです：
Databricksツール – 20%
データ処理 – 30%
データモデリング – 20%
セキュリティとガバナンス – 10%
モニタリングとログ記録 – 10%
テストとデプロイ – 10%

そして、以下の範囲が試験範囲外です。Delta Live Tablesも出題されないので注意してください。Kafkaそのものについての出題はないですが、問題の中でデータソースとして扱われることはあります。
![Screen Shot 2023-08-14 at 23.59.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/383330/cecd40c5-d6e8-e860-deae-c85899daf4f3.png)

# どのように対策したか
1. まずはAdvanced Data Engineering with Databricksの講座を受けました。講義動画とnotebookを通して、各セクションのポイントを押さえていきました。CDFの部分で動かないコードがありましたが、[ドキュメント](https://docs.databricks.com/ja/delta/delta-change-data-feed.html)で補完しました。次の3つのオプションのいずれかを使用して講座受けることが可能です：
    - [インストラクター付きトレーニング](https://www.databricks.com/learn/training/advanced-data-engineering)
    - [Customer Academy](https://customer-academy.databricks.com/)
    - [Partner Academy](https://partner-academy.databricks.com/)

2. 一通り講座は受けたので、[Exam Guide](https://files.training.databricks.com/static/docs/databricks-certified-data-engineer-professional-exam-guide.pdf?_gl=1*1lnoht*rs_ga*ODBkMzNjMzItZDNhOC00MTNiLTk3MWUtNzk5YTM0NTMwMjA4*rs_ga_PQSEQ3RZQC*MTY5MjAyMjI4NDkxNS4xOS4xLjE2OTIwMjQwMTcuMTIuMC4w*_gcl_au*MTgwNDM2ODEzNS4xNjkxNjQyMzQz&_ga=2.69118417.1906863371.1691827381-1549676738.1691642344)のSample Questionsを解いてみました。

3. 実際の現場の文脈で要件を満たす適切な判断を問う問題が多く、形式に慣れる必要があると感じました。そこでUdemyの[Mock Exam](https://www.udemy.com/share/108jqq3@vtpmv33zX_bA5h1SPUA7be4fG3bOM3aq8Y5zztfPlpUn1wGQTOAto9gQjF8QAJMSNA==/)を購入して演習しました。

4. 関連する分野のドキュメントは大体読みました。特に以下のドキュメントは役に立ちました。
[Spark Web UI](https://spark.apache.org/docs/latest/web-ui.html)
[ベストプラクティス: クラスター構成
](https://docs.databricks.com/ja/clusters/cluster-config-best-practices.html)[ジョブのアクセス制御](https://docs.databricks.com/ja/security/auth-authz/access-control/jobs-acl.html)
[ジョブの失敗のトラブルシューティングと修復](https://docs.databricks.com/ja/workflows/jobs/repair-job-failures.html)
[Jobs API 2.0](https://docs.databricks.com/ja/workflows/jobs/jobs-2.0-api.html)


# 受けてみた感想など
1. 英語の文章が非常に長く読んで1周目解くだけでほぼ時間を使い切ってしまいました。
1. Data Engineering Associateと異なり、Serviceの1対1対応を問う問題や単純な文法問題はほぼない。
1. 問題形式が実ケースを題材にしているので、Notebookを読むだけ・Sample Questionsを単純に解くだけではなく、なぜこの処理をしているのか？しなければならないのか？と意識することが大事です。
1. 全ての学習を通して非常に勉強になりました。

# おすすめの対策法
私が実践した1-4に加えて、[Databricks Certified Data Engineer Professional -Preparation](https://www.udemy.com/share/108pzA3@KuVlWih4rw_dU72C0EELzIoD8Cyxa82CRvEeHL7wAganXE0m3bCkVOUW95lSEChp-g==/)というUdemyの講座が分かりやすいと評判でした。実際デモと説明が必要十分で英語が聞き取りやすいだったのでおすすめです。