Mengelola dependensi untuk aplikasi Databricks

Aplikasi Databricks dapat menyertakan dependensi Python, dependensi Node.js, atau keduanya. Anda mendeklarasikan dependensi dalam file khusus bahasa yang Azure Databricks instal saat Anda menyebarkan aplikasi:

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.

Aplikasi berskala horizontal (Beta) yang dikonversi dari aplikasi standar dapat menolak pustaka yang telah diinstal sebelumnya dan berjalan pada gambar OS dasar yang bersih sebagai gantinya. Lihat Menonaktifkan pustaka Python prainstal untuk aplikasi Databricks.

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

pipAplikasi berbasis ini menyertakan pustaka Python prainstal berikut. Anda tidak perlu menambahkannya ke requirements.txt Anda kecuali jika 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. Aplikasi berbasis uv tidak menyertakan pustaka prainstal, jadi Anda harus mendeklarasikan semua dependensi dalam pyproject.toml. Anda juga dapat menentukan versi Python apa pun menggunakan kolom requires-python, tidak seperti aplikasi berbasis pip, yang menggunakan Python 3.11.

Hal yang sama berlaku untuk aplikasi yang diskalakan secara horizontal dan tidak menggunakan pustaka pra-instal. Lihat Menonaktifkan pustaka Python prainstal untuk aplikasi Databricks.

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. Azure Databricks mendukung npm dan pnpm, dan memilih manajer paket berdasarkan file kunci yang Anda sertakan:

  • Jika pnpm-lock.yaml ada, aplikasi menggunakan pnpm. Lihat Gunakan pnpm.
  • Jika tidak, aplikasi menggunakan npm.
  • Jika keduanya pnpm-lock.yaml dan package-lock.json hadir, pnpm diutamakan.

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 langkah build di bawah dependencies, bukan devDependencies. Jika Anda mengatur NODE_ENV=production dalam variabel lingkungan Anda, proses penyebaran melompati penginstalan devDependencies.

Menggunakan pnpm

Untuk melakukan build dengan pnpm, sertakan file pnpm-lock.yaml di samping package.json Anda. Hasilkan itu dengan menjalankan pnpm install secara lokal dan sertakan di direktori aplikasi Anda. Azure Databricks menyediakan pnpm melalui Corepack.

Perhatikan persyaratan berikut untuk pnpm aplikasi:

  • Dependensi diinstal dengan pnpm install --frozen-lockfile, jadi pnpm-lock.yaml harus tetap sinkron dengan package.json. Jika mereka menyimpang, build gagal alih-alih memperbarui file kunci. Regenerasi file kunci dengan pnpm install setelah Anda mengubah dependensi.
  • Anda harus menentukan perintah mulai di app.yaml. Tidak seperti npm aplikasi, pnpm aplikasi tidak kembali ke skrip default start . Lihat Mengonfigurasi eksekusi aplikasi Databricks dengan app.yaml.

Untuk proyek pnpm workspace (yang memiliki file pnpm-workspace.yaml), beberapa perintah app.yaml dijalankan pnpm secara rekursif. Misalnya, langkah build atau start mungkin berjalan pnpm -r run build. Perintah ini harus memanggil corepack pnpm alih-alih pnpm sehingga perintah berlapis diselesaikan dengan benar.

Hindari konflik versi

Ikuti panduan ini untuk menghindari konflik versi:

  • 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 memverifikasi 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

Azure Databricks menginstal pustaka yang ditentukan dalam requirements.txt, pyproject.toml, dan package.json 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 mengkodekan secara permanen 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.