ワークスペースでのDatabricksアセットバンドルの活用

こちらのアップデートです。

![Screenshot 2025-05-22 at 9.35.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/53dc40c3-08fd-4034-86f9-312da499fafe.png)

> **ワークスペースのDatabricksアセットバンドルにおけるコラボレーション**
> ワークスペースのUIからバンドルを作成、デプロイ、実行することができます。databricks.ymlを持つ定義済みのプロジェクトを格納するリポジトリをクローンするか、定義済みのテンプレートを用いて新規のバンドルを作成します。

リリースノートは[こちら](https://docs.databricks.com/aws/ja/release-notes/product/2025/may#databricks-asset-bundles-in-the-workspace-public-preview)。

> **ワークスペースにおけるDatabricksアセットバンドル(パブリックプレビュー)**
> ワークスペース内でのバンドルによって、ワークスペースのユーザーはUIを通じてバンドルを編集、コミット、テスト、デプロイすることができ、組織における他のユーザーとのDatabricksアセットバンドルを活用したコラボレーションがより簡単になりました。

マニュアルはこちらです。

https://docs.databricks.com/aws/ja/dev-tools/bundles/workspace

# Databricksアセットバンドルとは

> Databricks アセットバンドルは、ソース管理、コードレビュー、テスト、継続的インテグレーションとデリバリー (CI/CD) など、ソフトウェアエンジニアリングのベストプラクティスをデータプロジェクトや AI プロジェクトに導入するためのツールです。バンドルを使用すると、プロジェクトのソースファイルと一緒にメタデータを含めることができ、ジョブやパイプラインなどの Databricks リソースをソースファイルとして記述できます。最終的に、バンドルはプロジェクトのエンドツーエンドの定義であり、プロジェクトの構造化、テスト、デプロイの方法が含まれます。これにより、活発な開発中にプロジェクトでの共同作業が容易になります。

https://docs.databricks.com/aws/ja/dev-tools/bundles/

要はDatabricksのアセット(ノートブックやコンピュート、ジョブなどの資産)をバンドル(束)として開発、デプロイ、管理できる仕組みです。以前触ってました。

https://qiita.com/taka_yayoi/items/dc7645611551177a72c6

何かしらのプロジェクトを行う際に使用するアセットをバンドルとしてまとめて管理することで、開発環境、テスト環境、本番環境におけるCI/CDを容易にします。

![](https://docs.databricks.com/aws/ja/assets/images/bundles-cicd-53be5f4860e8ebcedc2702f870290cda.png)

ただ、こちらの機能は以前はローカルマシンからDatabricks CLIを使ってしか利用ができなかったので、コラボレーションはGitHubなどDatabricks外の環境に限定されていました。今回のアップデートでDatabricksワークスペース上でコラボレーションしながらアセットバンドルの機能を活用することができます。

# 機能の有効化

**プレビュー**で**Collaborate on Databricks Asset Bundles from the workspace**をオンにします。

![Screenshot 2025-05-22 at 12.44.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ae7a896b-9b24-4ede-87ff-77309d3f919e.png)

# チュートリアルのウォークスルー

こちらにチュートリアルがあるので試してみます。

https://docs.databricks.com/aws/ja/dev-tools/bundles/workspace-tutorial

## GitHubリポジトリのおよびGitフォルダの作成

この機能を使うには[Gitフォルダ](https://docs.databricks.com/aws/ja/repos/git-operations-with-repos)が必要ですので作成します。

## アセットバンドルの作成

Gitフォルダで**作成**をクリックすると、**アセットバンドル**が表示されるのでクリックします。

![Screenshot 2025-05-22 at 9.36.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/47b2e063-6447-41fa-86a2-a3e6b4eca6d7.png)

バンドルの名前をつけて、**Empty project(空のプロジェクト)** を選択し、**作成**をクリックします。

![Screenshot 2025-05-22 at 9.36.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/fa657262-ce16-4a10-b7a7-4c2f2b60b635.png)

## ノートブックの作成

アセットバンドル編集用のエディタが表示されます。

![Screenshot 2025-05-22 at 9.36.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d56e47aa-722a-4f45-b4ee-2037f7e3dd39.png)

このバンドルは1つのノートブックを実行するシンプルなものです。ノートブックを作成するために、**Create notebook**をクリックします。

バンドルのフォルダ内にノートブックが作成されるので、名前をつけてコードを記述します。

![Screenshot 2025-05-22 at 9.42.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/7de26db9-7acc-40fb-9deb-828cb12d31e8.png)

## ノートブックを実行するジョブの定義

画面左にあるロケットマークをクリックして、デプロイメントパネルを表示します。

![Screenshot 2025-05-22 at 9.42.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/d17a2cd5-f742-422b-a416-7d5ababe8241.png)

作成ボタンをクリックして、**新しいジョブ定義を作成する**をクリックします。

![Screenshot 2025-05-22 at 9.42.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/bba0a59c-a5c6-4688-856d-be2eb88ef692.png)

ジョブの名前をつけます。

![Screenshot 2025-05-22 at 9.43.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/9313a81c-4844-4790-8022-a4250cb538c1.png)

ジョブを定義するYAMLファイルが作成されます。

![Screenshot 2025-05-22 at 9.43.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/6cb68348-8991-4698-a1fe-b132830313a5.png)

これを編集して、ノートブックが実行されるジョブにします。

```yaml
resources:
  jobs:
    run_notebook:
      name: run-notebook
      queue:
        enabled: true
      tasks:
        - task_key: my-notebook-task
          notebook_task:
            notebook_path: ../helloworld.ipynb
```

![Screenshot 2025-05-22 at 9.43.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/dcb79a3f-0d5c-4303-8869-e10d107f4624.png)

## バンドルのデプロイ

デプロイメントパネルではデプロイ先を選択できます。デフォルトの`dev`のままとします。このデプロイメントモードに関しては[こちら](https://docs.databricks.com/aws/ja/dev-tools/bundles/deployment-modes)をごらんください。

![Screenshot 2025-05-22 at 9.44.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/f6da4c7a-7ab2-4c93-a18d-2e521e958706.png)

**デプロイ**ボタンをクリックします。

![Screenshot 2025-05-22 at 9.44.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/5ff5fb8e-7008-43f8-bbb0-22d88d71dafb.png)

確認画面が表示されるので**デプロイ**をクリックします。

![Screenshot 2025-05-22 at 9.44.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/3b75dd6e-7524-4d59-989a-acf7812d25d9.png)

デプロイメントがスタートします。

![Screenshot 2025-05-22 at 9.44.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/239db5df-b8d3-4f7f-b396-8965f164e52a.png)

デプロイされました。

![Screenshot 2025-05-22 at 9.45.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/b3a23ab3-e0c0-480c-a9ab-47cf319ba471.png)

## ジョブの実行

デプロイが完了すると画面左の**Bundle resources**にあるジョブが活性化します。マウスをホバーすると右端に再生ボタンが表示されるので、これをクリックします。

![Screenshot 2025-05-22 at 9.45.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/ad799818-b255-44c1-85ec-c964acb923b6.png)

ジョブの画面に実行すると、バンドルが実行されたことを確認できます。

![Screenshot 2025-05-22 at 9.46.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/080c83aa-833b-4231-9b64-afc0814489f2.png)

## リポジトリへのコミット

そして、これらのアセットバンドルはGitフォルダに格納されているので、GitHubなどのソースコントロールシステムで管理することができます。

![Screenshot 2025-05-22 at 11.12.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1168882/623d8b84-c97b-4f98-a94e-8ddbeaf9bf2e.png)

https://github.com/taka-yayoi/databricks_asset_bundles/tree/main

これまで以上にお手軽にアセットバンドルを利用できるようになりましたので、是非ご活用ください！

### はじめてのDatabricks

[はじめてのDatabricks](https://qiita.com/taka_yayoi/items/8dc72d083edb879a5e5d)

### Databricks無料トライアル

[Databricks無料トライアル](https://databricks.com/jp/try-databricks)