Mengelola dependensi untuk aplikasi Databricks

Setiap aplikasi Databricks dapat menyertakan dependensi untuk Python, Node.js, atau keduanya. Anda menentukan dependensi ini dalam file khusus bahasa:

Tentukan dependensi Python dengan pip

Aplikasi yang menggunakan pip dilengkapi dengan sekumpulan pustaka Python yang telah diinstal sebelumnya. Untuk menentukan pustaka Python tambahan, gunakan requirements.txt file. Jika ada paket yang tercantum yang cocok dengan yang telah diinstal sebelumnya, versi dalam file Anda akan mengambil alih default.

Contohnya:

# Override default version of dash
dash==2.10.0

# Add additional libraries not pre-installed
requests==2.31.0
numpy==1.24.3

# Specify a compatible version range
scikit-learn>=1.2.0,<1.3.0

Pustaka Python yang telah diinstal sebelumnya

Pustaka Python berikut telah diinstal sebelumnya untuk aplikasi berbasis pip. Anda tidak perlu menyertakannya dalam requirements.txt kecuali Anda memerlukan versi yang berbeda.

Perpustakaan Versi
databricks-sql-connector 3.4.0
databricks-sdk 0.33.0
mlflow-skinny (versi ringan) 2.16.2
gradio 4.44.0
Streamlit 1.38.0
mengkilap 1.1.0
Dash 2.18.1
Labu 3.0.3
fastapi 0.115.0
uvicorn[standard] 0.30.6
gunicorn 23.0.0
huggingface-hub 0.35.3
dash-ag-grid 31.2.0
komponen dash-mantine 0.14.4
dash-bootstrap-components 1.6.0
plotly 5.24.1
plotly-resampler 0.10.0

Tentukan dependensi Python dengan uv

Jika aplikasi Anda menggunakan uv untuk manajemen dependensi, tentukan dependensi Python dalam pyproject.toml file, bukan requirements.txt. Pustaka yang telah diinstal sebelumnya tidak tersedia untuk aplikasi berbasis uv. Anda harus mendeklarasikan semua ketergantungan dalam pyproject.toml. Anda juga dapat menentukan versi Python apa pun menggunakan requires-python bidang , tidak seperti pipaplikasi berbasis yang menggunakan Python 3.11.

Selama penyebaran, Databricks Apps memilih strategi penginstalan berdasarkan file mana yang ada:

  • Jika requirements.txt ada, aplikasi ini menggunakan pip untuk menginstal dependensi, terlepas dari apakah pyproject.toml juga ada. requirements.txt selalu diutamakan.
  • Jika requirements.txt tidak ada dan baik pyproject.toml dan uv.lock ada, aplikasi menggunakan uv untuk menginstal dependensi dari file kunci.

Penginstal uv membuat dan mengelola lingkungan virtualnya sendiri, sehingga Anda tidak perlu membuat direktori .venv.

Contoh berikut menunjukkan minimal pyproject.toml untuk aplikasi Databricks:

[project]
name = "my-app"
requires-python = ">=3.11"
dependencies = [
    "dash==2.10.0",
    "requests==2.31.0",
]

Untuk menggunakan uv, Anda harus menyertakan file uv.lock bersama dengan file pyproject.toml. Hasilkan itu dengan menjalankan uv lock secara lokal dan sertakan di direktori aplikasi Anda.

Menentukan dependensi Node.js

Untuk menentukan pustaka Node.js, sertakan file package.json di root aplikasi Anda. Selama penyebaran, Azure Databricks mendeteksi file ini dan menjalankan npm install untuk menginstal semua dependensi yang tercantum di dalamnya.

Misalnya, package.json file untuk aplikasi React menggunakan Vite mungkin terlihat seperti ini:

{
  "name": "react-fastapi-app",
  "version": "1.0.0",
  "private": true,
  "type": "module",
  "scripts": {
    "build": "npm run build:frontend",
    "build:frontend": "vite build frontend"
  },
  "dependencies": {
    "react": "^18.2.0",
    "react-dom": "^18.2.0",
    "typescript": "^5.0.0",
    "vite": "^5.0.0",
    "@vitejs/plugin-react": "^4.2.0",
    "@types/react": "^18.2.0",
    "@types/react-dom": "^18.2.0"
  }
}

Nota

Cantumkan semua paket yang diperlukan untuk npm run build di bawah dependencies, bukan devDependencies. Jika Anda mengatur NODE_ENV=production dalam variabel lingkungan Anda, proses penyebaran melompati penginstalan devDependencies.

Hindari konflik versi

Ingatlah hal-hal berikut saat Anda menentukan dependensi:

  • Untuk aplikasi berbasis pip, mengganti paket yang sudah terpasang dapat menyebabkan masalah kompatibilitas jika versi yang Anda tentukan berbeda secara signifikan dari yang sudah terpasang.
  • Selalu uji aplikasi Anda untuk memastikan bahwa perubahan versi paket tidak menimbulkan kesalahan.
  • Menyematkan versi eksplisit dalam requirements.txt membantu mempertahankan perilaku aplikasi yang konsisten di seluruh penyebaran.
  • Saat menggunakan uv, sertakan berkas uv.lock untuk instalasi yang sepenuhnya dapat direproduksi di setiap deployment.

Penginstalan dan manajemen dependensi

Pustaka yang ditentukan dalam requirements.txt, pyproject.toml, dan package.json diinstal langsung pada kontainer yang berjalan pada komputasi khusus Anda. Anda bertanggung jawab untuk mengelola dan menambal dependensi ini.

Anda dapat menentukan pustaka dari beberapa sumber dalam file dependensi Anda:

  • Pustaka yang diunduh dari repositori publik seperti PyPI dan npm
  • Repositori privat yang mengautentikasi menggunakan kredensial yang disimpan dalam rahasia Azure Databricks
  • Pustaka yang disimpan di direktori Anda /Volumes/ (misalnya, /Volumes/<catalog>/<schema>/<volume>/<path>)

Menginstal dari repositori privat

Untuk menginstal paket dari repositori privat, konfigurasikan variabel lingkungan untuk autentikasi. Misalnya, atur PIP_INDEX_URL untuk menunjuk ke repositori privat Anda:

env:
  - name: PIP_INDEX_URL
    valueFrom: my-pypi-secret

Konfigurasi jaringan ruang kerja Anda harus mengizinkan akses ke repositori privat. Lihat Mengonfigurasi jaringan untuk Aplikasi Databricks.

Menginstal file roda dari volume Unity Catalog

Untuk menginstal paket Python dari berkas wheel yang disimpan dalam volume Unity Catalog:

  1. Tambahkan volume Katalog Unity sebagai sumber daya ke aplikasi Anda. Lihat Katalog Unity Volume.
  2. Referensikan jalur file roda lengkap langsung di :requirements.txt
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl

Nota

Referensi variabel lingkungan tidak didukung di requirements.txt. Anda harus melakukan hardcode pada jalur file roda penuh.

Untuk meningkatkan keamanan saat mengakses repositori paket eksternal, gunakan kontrol keluar tanpa server untuk membatasi akses ke repositori publik dan mengonfigurasi jaringan privat. Lihat Mengonfigurasi jaringan untuk Aplikasi Databricks.