宣言型自動化バンドルライブラリの依存関係
このページでは、宣言型自動化バンドルライブラリの依存関係を宣言するための構文について説明します。バンドルを使用すると、 Databricksをプログラムで管理できます。 「宣言型自動化バンドルとは何か?」を参照してください。
ノートブックやソースファイルに加えて、ジョブ、パイプライン、その他のワークロードもライブラリに依存する可能性が高いでしょう。ライブラリの依存関係は、バンドル設定ファイルで宣言されます。
バンドルは、次のライブラリ依存関係をサポートします。
- Python wheel ファイル
- JAR ファイル (Java または Scala)
- PyPI、Maven、または CRAN パッケージ
Pythonの場合、 pyproject.tomlファイルで依存関係を指定し、それをバンドルに含めることもできます。uvとpyproject.tomlを参照してください。
ライブラリがサポートされているかどうかは、クラスター構成とライブラリ ソースによって異なります。 完全なライブラリ サポート情報については、「 ライブラリのインストール」を参照してください。
Python wheel ファイル
Python wheelファイルをジョブ タスクに追加するには、libraries で、インストールする各ライブラリの whl マッピングを指定します。 ホイール ファイルは、ワークスペース ファイル、 Unity Catalogボリューム、クラウドオブジェクトストレージ、またはローカル ファイル パスからインストールできます。
ライブラリは、Databricks Runtime 14.3 LTS 以前を使用している場合は DBFS からインストールできます。 ただし、ワークスペース ユーザーは誰でも DBFS に格納されているライブラリ ファイルを変更できます。 Databricksワークスペースでのライブラリのセキュリティを向上させるために、DBFSルートへのライブラリファイルの保存は、Databricks Runtime 15.1 以降のデフォルトによって非推奨になり、無効になっています。「 Storing Library in DBFSRoutes is deprecated and disabled by デフォルト」を参照してください。
Databricks代わりに、 ライブラリ、 ファイル、 コネクタを含むすべてのライブラリをワークスペースPython JARSparkファイルまたは ボリュームにアップロードするかUnity Catalog 、ライブラリ パッケージ リポジトリを使用することをお勧めします。ワークロードがこれらのパターンをサポートしていない場合は、クラウド・オブジェクト・ストレージに保管されているライブラリーも使用できます。
次の例は、ジョブタスクに 3 つの Python wheel ファイルをインストールする方法を示しています。
- 最初の Python wheel ファイルは、以前に Databricks ワークスペースにアップロードされたか、
syncマッピングのincludeアイテムとして追加され、バンドル設定ファイルと同じローカルフォルダにあります。 - 2 番目の Python wheel ファイルは、 Databricks ワークスペース内の指定されたワークスペース ファイルの場所にあります。
- 3 番目の Python wheel ファイルは、以前に Databricks ワークスペースの
my-volumeという名前のボリュームにアップロードされました。
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- whl: ./my-wheel-0.1.0.whl
- whl: /Workspace/Shared/Libraries/my-wheel-0.0.1-py3-none-any.whl
- whl: /Volumes/main/default/my-volume/my-wheel-0.1.0.whl
JAR ファイル (Java または Scala)
ジョブ・タスクに JAR ファイルを追加するには、 libraries で、インストールする各ライブラリーの jar ・マッピングを指定します。JAR は、Unity Catalog ボリューム、クラウド オブジェクト ストレージ、またはローカル ファイル パスからインストールできます。
ライブラリは、Databricks Runtime 14.3 LTS 以前を使用している場合は DBFS からインストールできます。 ただし、ワークスペース ユーザーは誰でも DBFS に格納されているライブラリ ファイルを変更できます。 Databricksワークスペースでのライブラリのセキュリティを向上させるために、DBFSルートへのライブラリファイルの保存は、Databricks Runtime 15.1 以降のデフォルトによって非推奨になり、無効になっています。「 Storing Library in DBFSRoutes is deprecated and disabled by デフォルト」を参照してください。
Databricks代わりに、 ライブラリ、 ファイル、 コネクタを含むすべてのライブラリをワークスペースPython JARSparkファイルまたは ボリュームにアップロードするかUnity Catalog 、ライブラリ パッケージ リポジトリを使用することをお勧めします。ワークロードがこれらのパターンをサポートしていない場合は、クラウド・オブジェクト・ストレージに保管されているライブラリーも使用できます。
次の例は、以前に Databricks ワークスペースの my-volume という名前のボリュームにアップロードされた JAR ファイルをインストールする方法を示しています。
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- jar: /Volumes/main/default/my-volume/my-java-library-1.0.jar
例えば、 JARをビルドしてデプロイする構成については、 Unity CatalogにJARファイルをアップロードするバンドル」を参照してください。 Scala JAR をビルドしてデプロイするバンドル プロジェクトを作成するチュートリアルについては、 「宣言型自動化バンドルを使用して Scala JAR をビルドする」を参照してください。
PyPI パッケージ
PyPI パッケージをジョブタスク定義に追加するには、 librariesで、インストールする各 PyPI パッケージの pypi マッピングを指定します。 マッピングごとに、以下を指定します。
packageには、インストールする PyPI パッケージの名前を指定します。オプションの正確なバージョン指定もサポートされています。- オプションで、「
repo」には、PyPI パッケージが見つかるリポジトリを指定します。 指定しない場合は、デフォルトのpipインデックスが使用されます (https://pypi.org/simple/)。
次の例は、2 つの PyPI パッケージをインストールする方法を示しています。
- 最初の PyPI パッケージは、指定されたパッケージバージョンとデフォルトの
pipインデックスを使用します。 - 2 番目の PyPI パッケージは、指定されたパッケージバージョンと明示的に指定された
pipインデックスを使用します。
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- pypi:
package: wheel==0.41.2
- pypi:
package: numpy==1.25.2
repo: https://pypi.org/simple/
Mavenパッケージ
Maven パッケージをジョブタスク定義に追加するには、 librariesで、インストールする各 Maven パッケージの maven マッピングを指定します。 マッピングごとに、以下を指定します。
coordinatesには、パッケージの Gradle スタイルの Maven 座標を指定します。- オプションで、
repoに、Maven パッケージのインストール元となる Maven リポジトリを指定します。 省略すると、Maven Central Repository と Spark Packages Repository の両方が検索されます。 - オプションで、
exclusionsに、明示的に除外する依存関係を指定します。 Maven 依存関係の除外を参照してください。
次の例は、2 つの Maven パッケージをインストールする方法を示しています。
- 最初の Maven パッケージは、指定されたパッケージ座標を使用し、Maven Central リポジトリと Spark パッケージリポジトリの両方でこのパッケージを検索します。
- 2 番目の Maven パッケージは、指定されたパッケージ座標を使用し、このパッケージを Maven Central リポジトリ内でのみ検索し、指定されたパターンに一致するこのパッケージの依存関係は含まれません。
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- maven:
coordinates: com.databricks:databricks-sdk-java:0.8.1
- maven:
coordinates: com.databricks:databricks-dbutils-scala_2.13:0.1.4
repo: https://mvnrepository.com/
exclusions:
- org.scala-lang:scala-library:2.13.0-RC*
Pythonのrequirements.txt
uv Pythonライブラリの依存関係を管理するための推奨方法です。 uvとpyproject.tomlを参照してください。
Python ライブラリの依存関係は、ジョブ タスク定義の一部として含まれる requirements*.txt ファイルで指定することもできます。ファイルへのパスには、ローカル パス、ワークスペース パス、または Unity Catalog ボリューム パスを指定できます。
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- requirements: ./local/path/requirements.txt
uvとpyproject.toml
uvを使用して Python ライブラリの依存関係を含めるには、バンドルに含まれるpyproject.tomlファイルでそれらを指定し、それらを含めるための環境依存関係を定義します。uv詳細については、 「uv の概要」を参照してください。
例えば、次のpyproject.tomlファイルはnumpy依存関係として追加します。
[project]
name = "test"
version = "0.0.1"
authors = [{ name = "someone@example.com" }]
requires-python = ">=3.10,<3.13"
dependencies = [
# Any dependencies for jobs and pipelines in this project can be added here
#
# LIMITATION: for pipelines, dependencies are cached during development;
# add dependencies to the 'environment' section of your pipeline.yml file instead
"numpy==1.25.2"
]
[dependency-groups]
dev = [
"pytest",
"ruff",
"databricks-dlt",
"databricks-connect>=15.4,<15.5",
"ipykernel",
]
[project.scripts]
main = "test.main:main"
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.ruff]
line-length = 120
次に、 pyproject.tomlで定義されているすべての依存関係を含めるようにバンドル リソース構成を編集します。そのためには、 pyproject.tomlがデプロイされているフォルダーを指す編集可能な環境を追加します。例として、パイプライン構成を以下に示します。
resources:
pipelines:
test_uv_etl:
name: test_uv_etl
catalog: ${var.catalog}
schema: ${var.schema}
serverless: true
root_path: '../src/test_uv_etl'
libraries:
- glob:
include: ../src/test_uv_etl/transformations/**
environment:
dependencies:
- --editable ${workspace.file_path}
uvを使用してバンドル アーティファクトを構築するには:
# databricks.yml
...
artifacts:
python_artifact:
type: whl
build: uv build --wheel
...