Databricks-alkalmazások függőségeinek kezelése

A Databricks-alkalmazások tartalmazhatnak Python függőségeket, Node.js függőségeket vagy mindkettőt. A függőségeket olyan nyelvspecifikus fájlokban deklarálja, amelyeket az Azure Databricks az alkalmazás üzembe helyezésekor telepít:

Python-függőségek definiálása a pip

A használt pip alkalmazások előre telepített Python-kódtárak készletével járnak. További Python-kódtárak definiálásához használjon egy requirements.txt fájlt. Ha a felsorolt csomagok megegyeznek az előre telepített csomagokkal, a fájlban lévő verziók felülírják az alapértelmezett értékeket.

A standard alkalmazásokból konvertált horizontálisan skálázott alkalmazások (bétaverzió) kikapcsolhatják az előre telepített kódtárakat, és ehelyett tiszta alap operációsrendszer-lemezképen futtathatók. Lásd: Az előre telepített Python-kódtárak letiltása Databricks-alkalmazásokhoz.

Például:

# 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

Előre telepített Python-kódtárak

pipA -alapú alkalmazások az alábbi előre telepített Python kódtárakat tartalmazzák. Nem kell hozzáadnia őket a(z) requirements.txt-hoz, hacsak nincs szüksége eltérő verzióra.

Könyvtár Verzió
databricks-sql-csatlakozó 3.4.0
databricks-SDK 0.33.0
mlflow-skinny 2.16.2
gradio 4.44.0
streamlit 1.38.0
Fényes 1.1.0
gondolatjel 2.18.1
lombik 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
ábrázolás 5.24.1
plotly-resampler 0.10.0

Python-függőségek definiálása a uv

Ha az alkalmazás függőségkezelésre használja uv , a Python-függőségeket a fájlban pyproject.toml kell definiálni ahelyett, hogy requirements.txt. uv-alapú alkalmazások nem tartalmaznak előre telepített könyvtárakat, ezért az összes függőséget meg kell adnia a pyproject.toml fájlban. A requires-python mező használatával bármely Python-verziót megadhat, ellentétben a pip-alapú alkalmazásokkal, amelyek Python 3.11-et használnak.

Ugyanez vonatkozik azokra a horizontálisan skálázott alkalmazásokra is, amelyek lemondták az előre telepített kódtárak használatát. Lásd: Az előre telepített Python-kódtárak letiltása Databricks-alkalmazásokhoz.

Az üzembe helyezés során a Databricks Apps a jelen lévő fájlok alapján választ egy telepítési stratégiát.

  • Ha requirements.txt létezik, az alkalmazás pip függőségeket telepít, függetlenül attól, hogy létezik-e pyproject.toml is. requirements.txt mindig elsőbbséget élvez.
  • Ha requirements.txt nem létezik, és mind pyproject.toml, mind uv.lock létezik, az alkalmazás a uv segítségével telepíti a függőségeket a zárolási fájlból.

A uv telepítő létrehozza és kezeli a saját virtuális környezetét, így önnek nem kell .venv könyvtárat létrehoznia.

Az alábbi példa egy Databricks-alkalmazás minimális pyproject.toml beállítását mutatja be:

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

A uv használatához egy uv.lock fájlt is mellékelnie kell a pyproject.toml mellé. Hozza létre helyi futtatással uv lock , és vegye fel az alkalmazás könyvtárába.

Node.js függőségek definiálása

Node.js kódtárak definiálásához adjon meg egy package.json fájlt az alkalmazás gyökerében. Az Azure Databricks mind a npm, mind a pnpm elemet támogatja, és a megadott zárolási fájl alapján választja ki a csomagkezelőt:

  • Ha pnpm-lock.yaml jelen van, az alkalmazás a következőt használja pnpm: . Lásd: Használat pnpm.
  • Ellenkező esetben az alkalmazás a következőt használja npm: .
  • Ha mindkettő pnpm-lock.yamlpackage-lock.json jelen van, pnpm elsőbbséget élvez.

Egy Vite-et használó React-alkalmazás fájlja például package.json így nézhet ki:

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

Megjegyzés:

Sorolja fel a buildlépéshez szükséges összes csomagot a(z) dependencies alatt, ne a(z) devDependencies alatt. Ha beállítja a NODE_ENV=production környezeti változók között, az üzembe helyezési folyamat kihagyja a devDependencies telepítését.

Használja pnpm

Az pnpm-val való buildeléshez helyezzen el egy pnpm-lock.yaml fájlt a package.json mellé. Hozza létre helyi futtatással pnpm install , és vegye fel az alkalmazás könyvtárába. Az Azure Databricks pnpm a Corepackon keresztül biztosítja.

Vegye figyelembe az alkalmazásokra vonatkozó pnpm alábbi követelményeket:

  • A függőségek a(z) pnpm install --frozen-lockfile segítségével települnek, ezért a(z) pnpm-lock.yaml elemnek szinkronban kell maradnia a(z) package.json elemmel. Ha eltérés van, a buildfolyamat meghiúsul ahelyett, hogy frissítené a zárolási fájlt. A függőségek módosítása után a pnpm install paranccsal generálja újra a lockfájlt.
  • Meg kell adnia a start parancsot a következőben app.yaml: . A npm alkalmazásokkal ellentétben a pnpm alkalmazások nem állnak vissza az alapértelmezett start szkriptre. Lásd: A Databricks-alkalmazás végrehajtásának konfigurálása a következővel app.yaml: .

A(z) pnpm munkaterület-projektek esetében (ahol van egy pnpm-workspace.yaml fájl), egyes app.yaml parancsok rekurzívan futnak le pnpm. Például egy build- vagy indítási lépés lefuttathatja a pnpm -r run build elemet. Ezeknek a parancsoknak a corepack pnpm helyett a pnpm elemet kell meghívniuk, hogy a beágyazott parancsok helyesen oldódjanak fel.

Verzióütközések elkerülése

A verzióütközések elkerülése érdekében kövesse az alábbi irányelveket:

  • A pip-alapú alkalmazások esetében az előre telepített csomagok felülírása kompatibilitási problémákat okozhat, ha a megadott verzió jelentősen eltér az előre telepítetttől.
  • Mindig tesztelje az alkalmazást annak ellenőrzéséhez, hogy a csomagverzió módosításai nem okoznak-e hibákat.
  • Az explicit verziók requirements.txt rögzítése segít fenntartani a konzisztens alkalmazás viselkedést az üzembe helyezések során.
  • Ha uv-t használja, adjon hozzá egy uv.lock fájlt a teljes mértékben reprodukálható telepítések érdekében különböző telepítések során.

Függőségek telepítése és kezelése

Az Azure Databricks közvetlenül az Ön dedikált számítási erőforrásán futó tárolóra telepíti a(z) requirements.txt, pyproject.toml és package.json elemben meghatározott kódtárakat. A függőségek kezeléséért és javításáért Ön a felelős.

A függőségi fájlokban több forrásból is megadhat kódtárakat:

  • Nyilvános adattárakból letöltött kódtárak, például a PyPI és az npm
  • Privát adattárak, amelyek az Azure Databricks titkos kulcsaiban tárolt hitelesítő adatokkal hitelesítik magukat
  • Az /Volumes/ könyvtárában tárolt könyvtárak (például /Volumes/<catalog>/<schema>/<volume>/<path>)

Telepítés privát adattárakból

Ha privát adattárból szeretne csomagokat telepíteni, konfiguráljon környezeti változókat a hitelesítéshez. Állítsa be például úgy, PIP_INDEX_URL hogy a privát adattárra mutasson:

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

A munkaterület hálózati konfigurációjának lehetővé kell tennie a privát adattár elérését. Lásd: A Databricks Apps hálózatkezelésének konfigurálása.

Munkaterületszintű alapértelmezett csomagtárházak használata

Important

Ez a funkció bétaverzióban érhető el. A használatához a munkaterület rendszergazdájának be kell kapcsolnia a Databricks-alkalmazások munkaterület-adattár-konfigurációjának engedélyezését az Előnézetek lapon. Lásd: Az Azure Databricks előzetes verziójának kezelése.

Ha a munkaterület rendszergazdája alapértelmezett csomagtárakat konfigurál a munkaterülethez, a munkaterületen lévő alkalmazások a nyilvános PyPI- és npm-adatbázisok helyett Python és Node.js csomagokat telepítenek a munkaterületen konfigurált adattárakból. Ez lehetővé teszi, hogy az alkalmazásfejlesztők automatikusan örököljék a vállalati csomagtárház beállításait anélkül, hogy az egyes alkalmazásokban duplikálják a konfigurációt, miközben továbbra is lehetővé teszik az alkalmazásonkénti felülbírálásokat.

A munkaterületszintű beállítások konfigurálásához tekintse meg az alapértelmezett csomagtárházak konfigurálását.

Python csomagok

A build csomagtelepítési fázisában a Databricks Apps a következő környezeti változók munkaterület-beállításait örökli:

  • PIP_INDEX_URL
  • PIP_EXTRA_INDEX_URL
  • PIP_CERT
  • UV_INDEX_URL
  • UV_EXTRA_INDEX_URL
  • SSL_CERT_FILE

Az alkalmazásspecifikus konfiguráció elsőbbséget élvez a munkaterület alapértelmezett beállításaival szemben. Ha az előző környezeti változók bármelyikét (kivéve az alább felsorolt tanúsítványbeállításokat) állítja be az alkalmazás fájljában app.yaml , a benne lévő app.yaml értékek felülírják az alkalmazás munkaterület-beállításait.

Megjegyzés:

A PIP_CERT és a SSL_CERT_FILE tanúsítványbeállításai mindig a munkaterületen beállított értékeket használják, és a(z) app.yaml helyen nem írhatók felül.

Warning

Teszteljék az alkalmazásaikat, miután a munkaterület rendszergazdája bekapcsolta az előnézetet, és állítsák be a PIP_INDEX_URL elemet a(z) app.yaml helyen, ha továbbra is egy másik indexből kell telepíteniük.

Node.js csomagok

Amikor a munkaterület rendszergazdája beállít egy alapértelmezett npm-beállításjegyzéket, a Databricks Apps az üzembe helyezés során az alkalmazás fájljába írja a munkaterület beállításjegyzékének konfigurációját .npmrc . Ez lehetővé teszi, hogy az alkalmazások Node.js csomagokat, köztük privát csomagokat telepítsenek a munkaterületen konfigurált beállításjegyzékből anélkül, hogy minden alkalmazás saját regisztrációs URL-címet vagy hitelesítési jogkivonatot tárol.

Ha egy adott alkalmazáshoz másik beállításjegyzéket szeretne használni, állítsa be az NPMRC alkalmazás fájljában app.yaml lévő környezeti változót úgy, hogy a saját npm-konfigurációjára hivatkozzon. Az alkalmazásspecifikus konfiguráció elsőbbséget élvez a munkaterület alapértelmezett beállításaival szemben.

Kerékfájlok telepítése Unity Catalog-kötetekből

Python-csomagok telepítése a Unity Catalog köteteiben tárolt wheel fájlokból:

  1. Adja hozzá erőforrásként a Unity-katalógus kötetét az alkalmazáshoz. Lásd a Unity Catalog volume-ot.
  2. Hivatkozzon a teljes wheel-fájl elérési útjára:
    • Telepítés ezzel: pip

      Adja hozzá az útvonalat közvetlenül a requirements.txt:

      /Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
      
    • Telepítés ezzel: uv

      Hozz létre egy uv-requirements.txt fájlt, amely tartalmazza az útvonalat, és tedd fel az alkalmazáskönyvtáradba:

      /Volumes/<catalog>/<schema>/<volume>/my_package-1.0.0-py3-none-any.whl
      

Megjegyzés:

A környezeti változókra való hivatkozások nem támogatottak az uv-requirements.txt vagy a requirements.txt elemben. A wheel-fájl teljes elérési útját fixen meg kell adnia a kódban.

A külső csomagtárházakhoz való hozzáférés biztonságának növelése érdekében a kiszolgáló nélküli kimenő forgalom vezérlőivel korlátozhatja a nyilvános adattárakhoz való hozzáférést, és konfigurálhatja a privát hálózatkezelést. Lásd: A Databricks Apps hálózatkezelésének konfigurálása.