Správa závislostí pro aplikaci Databricks

Každá aplikace Databricks může obsahovat závislosti pro Python, Node.jsnebo obojí. Tyto závislosti definujete v souborech specifických pro jazyk:

Definování závislostí Pythonu pomocí pip

Aplikace, které používají pip , mají sadu předinstalovaných knihoven Pythonu. Pro definování dalších knihoven Pythonu použijte soubor requirements.txt. Pokud některé uvedené balíčky odpovídají předinstalovaným, verze ve vašem souboru nahradí výchozí.

Například:

# 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

Předinstalované knihovny Pythonu

Pro aplikace založené na pipjazyce Python jsou předinstalované následující knihovny Pythonu. Pokud nepotřebujete jinou verzi, nemusíte je do svého requirements.txt zahrnout.

Knihovna Verze
Databricks SQL Connector 3.4.0
Databricks SDK 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
Streamlit 1.38.0
lesklý 1.1.0
pomlčka 2.18.1
baňka 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
dash-mantine-components 0.14.4
dash-bootstrap-components 1.6.0
plotly 5.24.1
převzorkování plotly 0.10.0

Definování závislostí Pythonu pomocí uv

Pokud vaše aplikace používá uv ke správě závislostí, definujte závislosti Pythonu pyproject.toml v souboru místo requirements.txt. Předinstalované knihovny nejsou dostupné pro aplikace založené na uv. Musíte deklarovat všechny závislosti ve svém pyproject.toml. Pomocí pole můžete také zadat libovolnou verzi Pythonu requires-python , na rozdíl od aplikací založených na pipPythonu 3.11.

Během nasazování aplikace Databricks vybere strategii instalace na základě toho, které soubory jsou k dispozici:

  • Pokud requirements.txt existuje, aplikace používá pip k instalaci závislostí bez ohledu na to, jestli pyproject.toml je k dispozici. requirements.txt vždy má přednost.
  • Pokud requirements.txt neexistuje a pokud existují jak pyproject.toml tak uv.lock, aplikace používá uv k instalaci závislostí ze souboru uzamčení.

Instalační uv program vytvoří a spravuje vlastní virtuální prostředí, takže nemusíte vytvářet .venv adresář.

Následující příklad ukazuje minimální pyproject.toml pro aplikaci Databricks:

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

Chcete-li použít uv, musíte zahrnout uv.lock soubor spolu s vaším pyproject.toml. Vygenerujte ho spuštěním uv lock místně a zahrňte ho do adresáře aplikace.

Definování závislostí Node.js

Pokud chcete definovat Node.js knihovny, zahrňte package.json soubor do kořenového adresáře aplikace. Během nasazování Azure Databricks zjistí tento soubor a spustí npm install pro instalaci všech závislostí uvedených v tomto souboru.

Například package.json soubor aplikace React používající Vite může vypadat takto:

{
  "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"
  }
}

Poznámka:

Uveďte všechny balíčky vyžadované pro npm run build pod dependencies, nikoli pod devDependencies. Pokud nastavíte NODE_ENV=production v proměnných prostředí, proces nasazení přeskočí instalaci devDependencies.

Vyhněte se konfliktům verzí

Při definování závislostí mějte na paměti následující skutečnosti:

  • U pipaplikací založených na předinstalovaných aplikacích může přepsání předinstalovaných balíčků způsobit problémy s kompatibilitou, pokud se zadaná verze výrazně liší od předinstalované verze.
  • Vždy otestujte aplikaci, abyste měli jistotu, že změny verze balíčku nezavádějí chyby.
  • Připnutí explicitních verzí requirements.txt pomáhá udržovat konzistentní chování aplikace napříč nasazeními.
  • Při použití uvzahrňte uv.lock soubor pro plně reprodukovatelné instalace napříč nasazeními.

Instalace a správa závislostí

Knihovny definované v requirements.txt, pyproject.toml a package.json se instalují přímo do kontejneru spuštěného na vašem dedikovaném výpočetním zařízení. Zodpovídáte za správu a opravy těchto závislostí.

V souborech závislostí můžete zadat knihovny z více zdrojů:

  • Knihovny stažené z veřejných úložišť, jako je PyPI a npm
  • Privátní úložiště, která se ověřují pomocí přihlašovacích údajů uložených v tajných klíčích Azure Databricks
  • Knihovny uložené v /Volumes/ adresáři (například /Volumes/<catalog>/<schema>/<volume>/<path>)

Instalace z privátních úložišť

Pokud chcete instalovat balíčky z privátního úložiště, nakonfigurujte proměnné prostředí pro ověřování. Například nastavte PIP_INDEX_URL odkaz na privátní úložiště:

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

Konfigurace sítě pracovního prostoru musí umožňovat přístup k privátnímu úložišti. Viz Konfigurace sítí pro Databricks Apps.

Instalace souborů kol ze svazků katalogu Unity

Instalace balíčků Pythonu ze souborů ve formátu Wheel uložených ve svazcích Unity Katalogu:

  1. Přidejte do aplikace katalog Unity svazek jako zdroj. Viz svazek katalogu Unity.
  2. Odkazujte přímo na plnou cestu k wheel souboru ve vašem requirements.txt:
/Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl

Poznámka:

Odkazy na proměnné prostředí nejsou podporovány v requirements.txt. Musíte pevně zakódovat úplnou cestu k souboru kolečka.

Pokud chcete zvýšit zabezpečení při přístupu k externím úložištím balíčků, použijte ovládací prvky výchozího přenosu dat bez serveru, abyste omezili přístup k veřejným úložištím a nakonfigurovali privátní sítě. Viz Konfigurace sítí pro Databricks Apps.