Databricks Asset Bundles(DABs) は、
Databricks 上のパイプライン、ジョブ、ノートブック、SQLクエリなどのリソースをコードとして管理・デプロイするための仕組みです。
いわば「Databricks の IaC(Infrastructure as Code)+ CI/CD 対応パッケージ」です。
1. 目的
- Databricks の構成(Jobs、Delta Live Tables、モデル登録など)を YAML やディレクトリ構造で宣言的に定義
- ローカルや GitHub からワークスペースに 一括デプロイ
- 環境ごと(dev, staging, prod)に設定を切り替え
- CI/CD パイプラインから自動デプロイ
2. 構成イメージ
プロジェクトはディレクトリ単位で「バンドル」として管理されます。
my_project/
├── bundle.yml # バンドルのメタ情報(名前、環境、リソース定義ファイルの参照)
├── resources/ # Jobs, DLT, Models などの定義
│ ├── job_etl.yml
│ └── dlt_pipeline.yml
├── notebooks/ # 実行対象ノートブック
│ └── etl_notebook.py
└── sql/ # SQLクエリやダッシュボード
└── sales_report.sql
3. 主な機能
-
環境変数の切り替え(dev/prod で異なる接続先やパラメータを利用)
-
複数リソースの一括管理(ジョブ、DLTパイプライン、モデル、SQLウェアハウスなど)
-
依存関係管理(ジョブ実行順序やリソース間リンク)
-
CLI デプロイ
databricks bundle deploy databricks bundle run job_etl
-
GitHub Actions や Azure DevOps との統合
4. メリット
- 再現性:全構成をコードで定義するため、同じ環境をいつでも再構築可能
- 自動化:CI/CD でテスト・デプロイを自動化
- 環境管理:開発環境と本番環境での設定差分を明確化
- 共同開発:チームで同じコードベースを共有
5. 利用イメージ(例:ジョブ定義)
resources/job_etl.yml
resources:
jobs:
etl_job:
name: "ETL Job"
tasks:
- task_key: etl_task
notebook_task:
notebook_path: ./notebooks/etl_notebook.py
existing_cluster_id: 1234-567890-abcd123
bundle.yml
bundle:
name: my_project
targets:
dev:
workspace:
host: https://adb-1234567890123456.7.azuredatabricks.net
prod:
workspace:
host: https://adb-6543210987654321.3.azuredatabricks.net
💡 簡単に言うと、Databricks Asset Bundles は Databricks の設定・ジョブを「コード化して環境ごとに一括デプロイ」できる仕組みです。
Terraform や CloudFormation に似ていますが、Databricks 専用で軽量・高速に動きます。