Databricks Certified Data Engineer Associate 教科書
第1章 Databricks Intelligence Platform(6%)
🎯 この節の学習目標
1-1 で見たとおり、実際のデータ処理はコンピュートプレーン上の計算資源で行われます。Databricks には用途別に複数のコンピュートがあり、「どのワークロードに、どのコンピュートを割り当てるか」はコストと使い勝手を左右するデータエンジニアの基本判断です。大きく分けると次の3系統です。
| 系統 | 種類 | 主な用途 |
|---|---|---|
| クラスタ (ノートブック・ジョブ用) | All-purpose クラスタ | 対話的な開発・探索・共同作業 |
| Job クラスタ | スケジュール実行される本番ジョブ(ETL) | |
| SQL ウェアハウス | クラシック/Pro/サーバーレス | SQL 分析・BI ダッシュボード |
| サーバーレスコンピュート | ノートブック・ジョブ・パイプライン向けサーバーレス | インフラ管理なしで即時に使える汎用計算資源 |
最初に押さえるべき対比が、この2種類のクラスタです。同じ Spark クラスタですが、ライフサイクル(起動と終了のされ方)とコストが異なります。
| All-purpose クラスタ | Job クラスタ | |
|---|---|---|
| 用途 | ノートブックでの対話的な開発・データ探索・複数人での共同作業 | スケジュール済みの自動ジョブ(本番 ETL など) |
| ライフサイクル | 手動(または API)で起動し、明示的に停止するか自動終了するまで動き続ける | ジョブ開始時に自動作成され、ジョブ完了と同時に自動終了する |
| 共有 | 複数ユーザー・複数ノートブックでアタッチして共有できる | そのジョブ実行専用。使い回しはできない |
| コスト | DBU 単価が高い。放置するとアイドル時間にも課金され続ける | DBU 単価が安いうえ、実行時間分しか課金されない |
📝 試験のポイント
「開発が終わったノートブックを毎晩自動実行することになった。コストを抑えるには?」→ 正解は「Job クラスタで実行する」です。All-purpose クラスタのままスケジュール実行するのは、単価が高く、起動しっぱなしのリスクもあるため誤答側になります。逆に「複数のデータエンジニアが日中、対話的に共同開発する」なら All-purpose クラスタ(+自動終了の設定)が正解側です。対話的=All-purpose、自動ジョブ=Job クラスタという軸で判断しましょう。
SQL ウェアハウスは、Databricks SQL のクエリ・ダッシュボード・BI ツール接続(JDBC/ODBC)のために最適化されたコンピュートです。ノートブックの Python コードを動かす場所ではなく、SQL ワークロード専用である点がクラスタとの違いです。タイプは3種類あります。
| タイプ | 計算資源の場所 | 特徴 |
|---|---|---|
| クラシック | 顧客クラウド | 基本形。起動に数分かかる |
| Pro | 顧客クラウド | クラシックより高機能だが、起動時間の課題は残る |
| サーバーレス | Databricks アカウント | 数秒で起動し、負荷に応じて即座にスケール。多数の同時ユーザーに強く、BI 用途の第一候補 |
SQL ウェアハウスは、複数ユーザーからの多数の同時クエリをさばくよう設計されています。これは旧世代の「高同時実行(high-concurrency)クラスタ」が担っていた役割の後継にあたる考え方で、古い教材や過去の出題では high-concurrency クラスタという名称が登場することもあります。「多数のアナリストが同時に SQL を投げる用途向けのコンピュート」という概念として押さえておきましょう。
サーバーレスコンピュートは、計算資源を Databricks 側が事前にプールしておき、必要な瞬間に割り当てる方式です。SQL ウェアハウスだけでなく、ノートブック・ジョブ・パイプラインでも利用できます。特徴は次の3点です。
Databricks の課金は、クラウドインフラ費用(クラシック構成の場合)に加えて、DBU(Databricks Unit)という処理能力の単位に基づきます。コストを左右する主要な仕組みを整理します。
| 仕組み | 内容 | コストへの効き方 |
|---|---|---|
| DBU 課金 | コンピュートの種類・サイズごとに毎時の DBU 消費が決まり、稼働時間に応じて課金される | 同じ処理でもコンピュートの種類(All-purpose か Job か等)で単価が変わる |
| オートスケーリング(autoscaling) | 負荷に応じてワーカーノード数を最小〜最大の範囲で自動増減する | ピークに合わせた固定サイズ確保をやめ、閑散時のムダを削る |
| 自動終了(auto-termination) | 指定したアイドル時間(例:30分)が続いたらクラスタを自動停止する | 「使い終わって放置されたクラスタ」への課金を止める。All-purpose クラスタでは必須級の設定 |
| Photon | C++ で実装された高速な実行エンジン。SQL・DataFrame 処理をベクトル化実行で高速化する | DBU 単価は上がるが処理時間が短縮されるため、対象ワークロードでは総コストが下がることが多い |
💡 具体例:開発用 All-purpose クラスタのコスト対策
ある開発チームが、日中だけ使う共有の All-purpose クラスタを運用しているとします。コストを抑える定石は次の組み合わせです。
# クラスタ定義(REST API / Terraform 等で指定する項目のイメージ)
{
"cluster_name": "dev-shared-cluster",
"autotermination_minutes": 30, # 30分アイドルで自動終了
"autoscale": {
"min_workers": 2, # 閑散時は2ノードまで縮小
"max_workers": 8 # ピーク時のみ8ノードへ拡大
},
"runtime_engine": "PHOTON" # Photon で処理時間を短縮
}
「夜間や昼休みに誰も使っていないのに動き続ける」が All-purpose クラスタの典型的なコスト漏れであり、自動終了の設定がその特効薬です。さらに本番の定期実行に移す段階では、クラスタごと Job クラスタへ切り替えるのが正しい流れです。
ここまでの内容を「シナリオ → 最適コンピュート」の判断表にまとめます。試験の選択問題はほぼこの表の形で出題されると考えてよい範囲です。
| ワークロード | 最適なコンピュート | 理由 |
|---|---|---|
| 多数のアナリストによるアドホック SQL・BI ダッシュボード | サーバーレス SQL ウェアハウス | 起動が速く、多数の同時ユーザーに対して自動スケールで応答性を保てる |
| 夜間バッチの本番 ETL(スケジュール実行) | Job クラスタ | 実行時のみ起動・終了し、DBU 単価も安い。アイドル課金が発生しない |
| データエンジニアの対話的な開発・探索 | All-purpose クラスタ(自動終了を設定) | 複数人・複数ノートブックで共有でき、対話的な試行錯誤に向く。自動終了でアイドル課金を防ぐ |
| インフラ管理をなくし、すぐ使い始めたいノートブック・ジョブ | サーバーレスコンピュート | 起動待ちとクラスタ設定のチューニングが不要で、使った分だけの課金になる |
迷ったときの判断の流れをフローチャートにすると次のようになります。
図:ワークロードからコンピュートを選ぶ判断フロー(いずれの分岐でも、管理不要を優先するならサーバーレスが選択肢になる)
✅ この節のまとめ
問1. ノートブックでの開発が完了し、その処理を毎晩2時にスケジュール実行することになった。コスト効率が最も高いコンピュートの選択はどれか。
正解:B
スケジュール済みの自動ジョブには Job クラスタが定石です。実行時のみ自動作成・自動終了するためアイドル課金がなく、DBU 単価も All-purpose より安く設定されています。AはDBU単価が高く、Dはアイドル時間への課金が膨らむ最悪の構成です。Cは誤りで、SQL ウェアハウスは SQL クエリ・BI 用のコンピュートであり、ノートブックのジョブ実行基盤ではありません。
問2. 50人のビジネスアナリストが日中、BI ツールと SQL エディタから同時多発的にアドホッククエリを実行する。応答性とコスト効率を両立する最適なコンピュートはどれか。
正解:C
「多数の同時ユーザー × アドホック SQL」はサーバーレス SQL ウェアハウスの典型ユースケースです。数秒で起動し、負荷に応じて自動スケールするため応答性とコストのバランスに優れます。Aは50台分のコストと管理負荷が非現実的、Bは Job クラスタの用途(スケジュール実行)から外れるうえ常時課金になります。Dはクエリごとに数分の起動待ちが発生し、対話的な分析に耐えません。
問3. 開発チームが共有する All-purpose クラスタで、「退勤後も夜通しクラスタが起動したままで、アイドル時間に課金され続けていた」という問題が見つかった。最も直接的な対策はどれか。
正解:B
「アイドル状態での課金継続」への直接の対策は自動終了の設定です。指定時間(例:30分)アイドルが続くとクラスタが自動停止し、放置課金が止まります。Aは処理の高速化には効きますが、そもそも何も処理していないアイドル時間には無関係です。Cはむしろコスト増の方向です。Dは意味を成さない選択肢で、Delta Lake はテーブルのストレージフォーマットであり、クラスタに適用する概念ではありません。
問4. Databricks のコストモデルに関する説明として正しいものはどれか。
正解:C
Photon は高速な実行エンジンで、DBU 単価は上がるものの処理が速く終わるため、対象ワークロードでは総コストの削減が期待できます。Aは誤りで、All-purpose と Job クラスタで単価が異なることこそが使い分けの根拠です。Bも誤りで、オートスケーリングは負荷低下時にノードを「減らす」方向にも働きます。Dも誤りで、サーバーレスは使った分だけの従量課金です。