· FinDocGen · 10 min read
DABSによるDatabricks開発環境のセットアップから本番デプロイまで
Databricksの開発環境を効率化するために、DABS(Databricks Automation and Build System)を導入しました。この記事では、DABSの概要と導入手順、活用方法について解説します。
はじめに
Databricksの開発環境を効率化するために、DABS(Databricks Automation and Build System)を導入しました。この記事では、DABSの概要と導入手順、活用方法について解説します。
DABSとは?
DABSは、Databricksのワークスペース管理、ノートブックのバージョン管理、CI/CDパイプラインの構築を支援するオープンソースツールです。これにより、Databricks上での開発プロセスを自動化し、効率的に運用できます。
事前準備
git リポジトリの作成とクローン
DBASプロジェクト用のgitリポジトリを作成し、ローカルにクローンします。以下のコマンドを実行してください。
git clone git@github.com:crz33/findocgen.gitvenv の作成と有効化
Pythonの仮想環境を作成し、有効化します。以下のコマンドを実行してください。
python -m venv .venv
source .venv/bin/activateDatabricks CLI のインストール
DABSを使用するには、まずDatabricks CLIをインストールし、認証情報を設定する必要があります。以下のコマンドでインストールします。
brew tap databricks/tap
brew install databricksバージョンを確認してください。v0.200 以上が確認できていればOKです。2026年1月時点では以下のようになります。
databricks -v
Databricks CLI v0.282.0認証プロファイルの設定
Databricks CLIの認証情報を設定します。以下のコマンドを実行します。 プロファイルは認証情報を複数管理するための名前です。ここでは「findocgen」としています。
databricks auth login --host https://x.x.azuredatabricks.net
Databricks profile name [adb-7405614752351615]: findocgen実行すると、ブラウザが起動し、Databricksのアクセストークンを入力する画面が表示されます。 Dabaricksにログインすれば認証が完了します。
ローカルのプロジェクトディレクトリに DABS を適用する
プロジェクトを DABS 化します。プロジェクト名やカタログ名以外はデフォルトのままで問題ありません。
databricks bundle init --output-dir .
Template to use:default-python
Unique name for this project [my_project]: findocgen
Include a job that runs a notebook: yes
Include an ETL pipeline: yes
Include a sample Python package that builds into a wheel file: yes
Use serverless compute: yes
Default catalog for any tables created by this project [ws_findocgen]: findocgen
Use a personal schema for each user working on this project.: yesv0.282.0では--output-dirオプションが無効なようです。findocgenディレクトリが作成されてしまいます。仕方ないので、以下のコマンドで移動します。
mv findocgen/* .
mv findocgen/.* .
rmdir findocgen初期化後のディレクトリ構成
DABSで初期化した後のディレクトリ構成は以下のようになります。
.databricks ディレクトリ
「DABSがローカル環境とDatabricksワークスペースの状態を同期・管理するためのメタデータ保管庫」 です。
もし何らかの理由でデプロイが整合性エラーを起こしたり、環境を完全にリセットしたかったりする場合は、このフォルダを消してもプログラム本体(src等)には影響ありません。
fixtures ディレクトリ
「プログラムの動作確認(テスト)に使うための、中身が変わらないサンプルデータ置き場」です。開発中に何度も本物のAPIを叩く必要がなくなり、効率的にテストが行えます。
resources ディレクトリ
「Databricks上の『インフラ』や『実行スケジュール』をコードで定義する場所」です。
主に以下のようなリソースを定義した YAMLファイル を配置します。
- Databricks Jobs (Workflows)
- Delta Live Tables (DLT) Pipelines
- Dashboards / Models
src ディレクトリ
「あなたのプログラムの『中身(ロジック)』そのものを置く場所」です。
Databricks上で実際に計算や処理を行うコードを配置します。
- Pythonスクリプト (.py): AIによる分析処理や、データのクレンジングを行うコード。
- Databricksノートブック (.ipynb または Pythonファイル形式): 実験的なコードや、可視化を含む処理。
- SQLファイル: データの抽出やテーブル作成を行うクエリ。
- 自作ライブラリ/モジュール: 複数のジョブから共通で呼び出すユーティリティ関数など。
tests ディレクトリ
「プログラムが意図通りに動くかを自動で検証する『試験場』」です。Python のテストコード(pytest など) を配置します。
databricks.yml ファイル
プロジェクト全体の設定ファイルで最も重要なファイルです。
以下の情報を一元管理します。
- プロジェクトの定義: 誰が、何という名前のプロジェクトを動かしているのか(bundle.name)。
- デプロイ先の指定(Targets): どのワークスペース(開発環境や本番環境)に対してデプロイするのか。
- 変数の管理 (Variables): カタログ名やスキーマ名など、環境ごとに変えたい値を定義。
- リソースの紐付け (Includes): resources/ フォルダ内にある具体的なジョブ設定などを読み込む指示。
必要なPythonパッケージをインストールする
pyproject.toml に記載されている必要なPythonパッケージをインストールします。
ですが、pyproject.tomlの書き方が新しい標準(PEP 735)に準拠しているため、pipのバージョンを最新にアップデートしてからインストールしてください。
pip install --upgrade pip
pip install --group devVSCodeを起動して拡張機能をインストールする
VSCodeでプロジェクトを開きます。
すると、workspaceに推奨の拡張機能が表示されるので、全てインストールします。 必須なのは「Databricks for VSCode」です。
リモート実行(Databricks Connect)を有効にする
Databricks Connect は、一言でいうと 「手元の VSCode で書いたコードを、リモートにある Databricks の強力なコンピューティング資源(クラスター)を使って実行・デバッグできる機能」 です。
通常、Spark などの重い処理を動かすには Databricks 上のノートブックを使う必要がありますが、Databricks Connect を使うと、**「開発は快適なローカルの VSCode で、計算だけはクラウドのクラスターで」**といういいとこ取りが可能になります。
DABS開発では必須なので、Databricks Connectをインストールして、有効にしましょう。
Databricks Connectの設定
クラスターを選択します。
- VSCode左側の Databricksアイコン をクリックします。
- 「Configuration」セクションにある 「Cluster」 をクリックします。
- 表示されるリストから、実行に使用したいクラスターを選択します。サーバーレスを選択します。
開発前に不要なリソースを削除する
databricks bundle init コマンドで生成された構成で、小規模開発で不要なものは削除します。
fixtures/ディレクトリ: サンプルデータが不要な場合は削除します。tests/ディレクトリ: テストコードが不要な場合は削除します。
また、プロジェクトで使用しないリソース定義のインクルード、一旦コメントアウトします。
# include:
# - resources/*.yml
# - resources/*/*.ymlノートブックの開発とデプロイ
ローカル開発
src/sample_notebook.ipynb を開き、以下のコードに書き換えます。すべてのworkspaceに公開されているDatabricksのサンプルデータから取得するコードです。数秒で完了します。
セットアップの延長で実行すると、初期化などのタイミングでなかなか終了しないことがあります。セットアップ直後の初めての実行の場合は、カーネルを再起動したり、VSCodeを再起動するなど、試してみてください。
from databricks.connect import DatabricksSession
spark = DatabricksSession.builder.getOrCreate()
# サンプルデータセットから10行を読み込み表示
df = spark.read.table("samples.tpch.customer").limit(10)
df.show()開発環境へデプロイして実行
ノートブックを開発環境へデプロイし、実行します。
# targetをdevに指定してデプロイ
databricks bundle deploy -t dev
# databricks.yamlのtargets/dev/default=true なので省略も可能
databricks bundle deploydevでデプロイすると/Users/<your-username>/.bundle/findocgen/dev/files/src/sample_notebook.ipynbにノートブックがデプロイされます。
そこでノートブックのセルを実行しましょう。 ただし、実行してもVSCodeで実行したのと同じ動作です。
本番環境へデプロイして実行
ノートブックを本番環境へデプロイします。
databricks bundle deploy -t prodデプロイ先は、databricks.ymlのtargets/prod/root_pathで変更できます。
まとめ
DABSを導入することで、Databricksの開発環境を効率化し、コードの管理やデプロイが容易になりました。今後は、DABSを活用して、より高度なデータ処理や分析を行っていきます。ぜひ皆さんもDABSを試してみてください。