次の方法で共有


Databricks アセット バンドルのライブラリ依存関係

この記事では、Databricks アセット バンドルのライブラリ依存関係を宣言するための構文について説明します。 バンドルを使用すると、Lakeflow ジョブをプログラムで管理できます。 「Databricks アセット バンドルとは」をご覧ください。

ノートブックとソース ファイルに加えて、ジョブは期待どおりに動作するためにライブラリに依存する可能性があります。 ライブラリの依存関係は バンドル構成ファイル で宣言され、多くの場合、 ジョブ タスクの種類 の仕様の一部として必要になります。

バンドルでは、次のライブラリ依存関係がサポートされます。

  • Python ホイール ファイル
  • JAR ファイル (Java または Scala)
  • PyPI、Maven、または CRAN パッケージ

Python の場合は、 requirements.txt ファイルでジョブ タスクの依存関係を指定し、バンドルに含めることもできます。 Python requirements.txtを参照してください。

注記

ライブラリがサポートされているかどうかは、クラスター構成とライブラリ ソースによって異なります。 ライブラリの完全なサポート情報については、「 ライブラリのインストール」を参照してください。

Python ホイール ファイル

Python ホイール ファイルをジョブ タスクに追加するには、libraries で、インストールする各ライブラリの whl マッピングを指定します。 ワークスペース ファイル、Unity カタログ ボリューム、クラウド オブジェクト ストレージ、またはローカル ファイル パスからホイール ファイルをインストールできます。

重要

Databricks Runtime 14.3 LTS 以下を使用する場合は、DBFS からライブラリをインストールできます。 ただし、ワークスペース ユーザーは、DBFS に格納されているライブラリ ファイルを変更できます。 Azure Databricks ワークスペース内のライブラリのセキュリティを向上させるために、Databricks Runtime 15.1 以降では、ライブラリ ファイルを DBFS ルートに格納することは非推奨となり、既定では無効になっています。 「DBFS ルートにライブラリを格納することは非推奨であり、既定では無効になっている」を参照してください。

代わりに、Databricks では、Python ライブラリ、JAR ファイル、Spark コネクタなど、すべてのライブラリをワークスペース ファイルまたは Unity カタログ ボリュームにアップロードするか、ライブラリ パッケージ リポジトリを使用 することをお勧めします。 ワークロードでこれらのパターンがサポートされない場合、クラウド オブジェクト ストレージに格納されているライブラリも使用できます。

次の例は、1 つのジョブ タスクに 3 つの Python ホイール ファイルをインストールする方法を示しています。

  • 最初の Python ホイール ファイルは、以前に Azure Databricks ワークスペースにアップロードされたか、includesync 項目として追加されて、バンドル構成ファイルと同じローカル フォルダーにあります。
  • 2 番目の Python ホイール ファイルは、Azure Databricks ワークスペース内の指定したワークスペース ファイルの場所に格納されます。
  • 3 番目の Python ホイール ファイルは、Azure 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 マッピングを指定します。 Unity カタログ ボリューム、クラウド オブジェクト ストレージ、またはローカル ファイル パスから JAR をインストールできます。

重要

Databricks Runtime 14.3 LTS 以下を使用する場合は、DBFS からライブラリをインストールできます。 ただし、ワークスペース ユーザーは、DBFS に格納されているライブラリ ファイルを変更できます。 Azure Databricks ワークスペース内のライブラリのセキュリティを向上させるために、Databricks Runtime 15.1 以降では、ライブラリ ファイルを DBFS ルートに格納することは非推奨となり、既定では無効になっています。 「DBFS ルートにライブラリを格納することは非推奨であり、既定では無効になっている」を参照してください。

代わりに、Databricks では、Python ライブラリ、JAR ファイル、Spark コネクタなど、すべてのライブラリをワークスペース ファイルまたは Unity カタログ ボリュームにアップロードするか、ライブラリ パッケージ リポジトリを使用 することをお勧めします。 ワークロードでこれらのパターンがサポートされない場合、クラウド オブジェクト ストレージに格納されているライブラリも使用できます。

次の例は、Azure 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 をビルドしてデプロイする構成例については、JAR ファイルを Unity カタログにアップロードするバンドルを参照してください。 Scala JAR をビルドしてデプロイするバンドル プロジェクトを作成するチュートリアルについては、「 Databricks Asset Bundles を使用した Scala JAR のビルド」を参照してください。

PyPI パッケージ

ジョブ タスクの定義に PyPI パッケージを追加するには、libraries で、インストールする各 PyPI パッケージの pypi マッピングを指定します。 マッピングごとに、以下を指定します。

  • package で、インストールする PyPI パッケージの名前を指定します。 オプションの正確なバージョン指定もサポートされています。
  • 必要に応じて、repoの場合は、PyPI パッケージが見つかるリポジトリを指定します。 指定しないと、既定の pip インデックスが使われます (https://pypi.org/simple/)。

次の例では、2 つの PyPI パッケージをインストールする方法を示します。

  • 1 つ目の 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 リポジトリと Spark Packages リポジトリの両方が検索されます。
  • 必要に応じて、exclusions で、明示的に除外する依存関係を指定します。 Maven 依存関係の除外に関する説明をご覧ください。

次の例では、2 つの Maven パッケージをインストールする方法を示します。

  • 1 つ目の Maven パッケージでは、指定したパッケージ座標が使われ、Maven Central リポジトリと Spark Packages リポジトリの両方でこのパッケージが検索されます。
  • 2 番目の Maven パッケージは、指定されたパッケージ座標を使用し、Maven Central Repository でのみこのパッケージを検索し、指定されたパターンに一致するこのパッケージの依存関係は含まれません。
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

Python ライブラリの依存関係は、ジョブ タスク定義の一部として含まれる requirements*.txt ファイルでも指定できます。 ファイルへのパスには、ローカル パス、ワークスペース パス、または Unity カタログ ボリューム パスを指定できます。

resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - requirements: ./local/path/requirements.txt