バンドル内のプライベートアーティファクトの使用

JFrog Artifactoryなどのサードパーティツールやプライベートリポジトリに保存されているファイルやアーティファクトは、Databricksアセットバンドルの一部となる必要がある場合があります。 この記事では、これらのファイルを処理する方法について説明します。 Databricks アセットバンドルに関する情報については、「Databricksアセットバンドルとは」を参照してください。

プライベート ホイールを使用するバンドルの例については、 bundle-examples GitHub リポジトリを参照してください。

ヒント

ノートブックを使用している場合は、ノートブックのプライベートリポジトリから Python wheelsをインストールし、バンドル内のジョブにnotebook_taskを追加できます。 ノートブック スコープの Python ライブラリを参照してください。

アーティファクトをローカルにダウンロードします

Databricks Asset Bundles を使用してプライベートアーティファクトを管理するには、まずローカルにダウンロードする必要があります。その後、バンドル内で参照してバンドルの一部としてワークスペースにデプロイするか、Unity Catalog にアップロードしてバンドル内で参照することができます。

たとえば、次のコマンドは、Python wheel ファイルを dist ディレクトリにダウンロードします。

pip download -d dist my-wheel==1.0

また、プライベートな PyPI パッケージをダウンロードして、それを dist ディレクトリにコピーすることもできます。

export PYPI_TOKEN=<YOUR TOKEN>
pip download -d dist my-package==1.0.0 --index-url https://$PYPI_TOKEN@<package-index-url> --no-deps

(オプション)アーティファクトをUnity Catalog にアップロードする

アーティファクトをダウンロードしたら、オプションで を使用してダウンロードしたアーティファクトをUnity Catalog DatabricksCLIボリュームにコピーできるため、バンドルのデプロイ時にワークスペースにアップロードするのではなく、バンドルから参照できます。次の例では、ホイールを Unity Catalog ボリュームにコピーします。

databricks fs cp my-wheel-1.0-*.whl dbfs:/Volumes/myorg_test/myorg_volumes/packages

ヒント

Databricks Asset Bundles は、バンドル設定で artifact_path を Unity Catalog ボリュームパスに設定した場合、バンドルで参照されるすべてのアーティファクトを Unity Catalog に自動的にアップロードします。

アーティファクトを参照する

アーティファクトをバンドルに含めるには、設定でアーティファクトを参照します。

次のバンドルの例は、ジョブの wheel ディレクトリ内の dist ファイルを参照します。 この構成では、バンドルがデプロイされるときにホイールがワークスペースにアップロードされます。

resources:
  jobs:
    demo-job:
      name: demo-job
      tasks:
        - task_key: python-task
          new_cluster:
            spark_version: 13.3.x-scala2.12
            node_type_id:  Standard_D4s_v5
            num_workers: 1
          spark_python_task:
            python_file: ../src/main.py
          libraries:
            - whl: ../dist/my-wheel-1.0-*.whl

アーティファクトを Unity Catalog ボリュームにアップロードした場合は、その場所で参照するようにジョブを設定します。

resources:
  jobs:
    demo-job:
      name: demo-job
      tasks:
        - task_key: python-task
          new_cluster:
            spark_version: 13.3.x-scala2.12
            node_type_id:  Standard_D4s_v5
            num_workers: 1
          spark_python_task:
            python_file: ../src/main.py
          libraries:
            - whl: /Volumes/myorg_test/myorg_volumes/packages/my-wheel-1.0-py3-none-any.whl

Python wheelの場合は、ジョブのpython_wheel_taskで参照することもできます。

resources:
  jobs:
    demo-job:
      name: demo-job
      tasks:
        - task_key: wheel_task
          python_wheel_task:
            package_name: my_package
            entry_point: entry
          job_cluster_key: Job_cluster
          libraries:
            - whl: ../dist/my-wheel-1.0-*.whl