· 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.git

venv の作成と有効化

Pythonの仮想環境を作成し、有効化します。以下のコマンドを実行してください。

python -m venv .venv
source .venv/bin/activate

Databricks 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.: yes

v0.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 dev

VSCodeを起動して拡張機能をインストールする

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 deploy

devでデプロイすると/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を試してみてください。

Back to Blog

DABSプロジェクトのディレクトリ構成例

DABS (Data and Analytics for Business Solutions) プロジェクトの典型的なディレクトリ構成例を紹介します。共通ライブラリと実行アプリケーションを分離し、メンテナンス性と再利用性を高める方法を解説します。