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

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

Databricks ジョブは、ノートブックに加えて、期待どおりに動作するためにライブラリに依存する可能性があります。 ローカル開発の Databricks アセット バンドルの依存関係は、バンドル プロジェクトのルートにあるrequirements*.txtファイルで指定されますが、ジョブ タスク ライブラリの依存関係はバンドル構成ファイルで宣言され、多くの場合、ジョブ タスク タイプの仕様の一部として必要になります。

バンドルは、Databricks ジョブの次のライブラリ依存関係のサポートを提供します。

  • Python wheelファイル

  • JAR ファイル (Java または Scala)

  • PyPI、Maven、または CRAN パッケージ

注:

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

Python wheelファイル

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

重要

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

代わりに、 、 Databricksライブラリ、PythonJAR ファイル、Spark コネクタを含むすべてのライブラリをワークスペース ファイルまたは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ファイル

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

重要

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

代わりに、 、 Databricksライブラリ、PythonJAR ファイル、Spark コネクタを含むすべてのライブラリをワークスペース ファイルまたは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

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 repo を指定します。 省略すると、Maven 中央リポジトリと Spark パッケージ リポジトリの両方が検索されます。

  • オプションで、[ exclusions] で、明示的に除外する依存関係を指定します。 Maven 依存関係の除外を参照してください。

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

  • 最初の Maven パッケージは、指定されたパッケージ座標を使用し、Maven 中央リポジトリと Spark パッケージ リポジトリの両方でこのパッケージを検索します。

  • 2 番目の Maven パッケージは、指定されたパッケージ座標を使用し、Maven 中央リポジトリでのみこのパッケージを検索し、指定されたパターンに一致するこのパッケージの依存関係は含めません。

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*