バンドル内のプライベートアーティファクトの使用
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