Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A szervezetek gyakran számos csomagot tartanak fenn, és ezekben a fejlettebb CI/CD-forgatókönyvekben ezek a csomagok közös konfigurációt és fájlokat használnak. A csomagok megoszthatják például a megosztott helyen tárolt kódtárakat, vagy a számítási beállítások és változók meghatározhatók egy megosztott helyen található konfigurációs fájlban.
Ez a cikk bemutatja, hogyan konfigurálhat két csomagot a konfiguráció és a fájlok megosztott mappában való használatára. A teljes megosztott csomagpéldák a csomagpéldák GitHub-adattárában találhatók.
További CI/CD- és fejlesztői ajánlott eljárásokért tekintse meg a Databricks ci-/CD-munkafolyamatait és a Databricks fejlesztői ajánlott eljárásait.
Adattár felépítése
Gyakori gyakorlat és a Databricks javaslata, hogy több csomag forrását egy tárházban tárolja egy megosztott mappával.
Egy több csomaggal rendelkező adattár-struktúra például a következő lehet:
databricks-bundle-repo/
├── shared
│ ├── variables.yml # has variable definitions like cluster_id
│ └── shared_library.py # has shared code used in multiple bundles
├── job_bundle
│ ├── databricks.yml # uses ${var.cluster_id} defined in variables.yml
│ ├── resources/
│ │ └── job_bundle.job.yml
│ ├── src/
│ │ ├── notebook.ipynb
│ │ └── my_python.py # uses ../shared/shared_library.py
│ └── README.md
├── pipeline_bundle
│ ├── databricks.yml
│ ├── resources/
│ │ ├── pipeline_bundle.job.yml # uses ${var.cluster_id} defined in variables.yml
│ │ └── pipeline_bundle.pipeline.yml
│ ├── src/
│ │ └── my_pipeline.ipynb
│ └── README.md
Fájlmegosztás konfigurálása
Ha csomagon kívüli kódfájlokat szeretne felvenni, adja meg őket a pathsszinkronizálási leképezés kulcsában.
Például adott egy mappát egy shared adattárban (a csomagmappák szintjén), amely a következőket tartalmazza:
egy
shared_library.pykódfájl a következő tartalommal:def multiply(a: int, b: int) -> int: return a * ba
variables.ymltartalommal:variables: cluster_id: default: 1234-567890-abcde123
Ezután a megosztott kódfájlt és a megosztott konfigurációban definiált csomagváltozót használó csomagkonfiguráció a következő:
# databricks.yml
bundle:
name: job_bundle
sync:
paths:
- ../shared
- ./src
include:
- resources/*.yml
- ../shared/*.yml
targets:
dev:
mode: development
default: true
workspace:
host: https://my-workspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
# job_bundle.job.yml
resources:
jobs:
my_python_job:
name: my_python_job
tasks:
- task_key: python_task
spark_python_task:
python_file: src/my_python.py # uses ../shared/shared_library.py
my_notebook_job:
name: my_notebook_job
tasks:
- task_key: notebook_task
existing_cluster_id: ${var.cluster_id} # defined in ../shared/variables.yml
notebook_task:
notebook_path: src/notebook.ipynb
# my_python.py
import os
import sys
# Traverse to the sync root path.
# Note: this requires :re[DBR] >= 14 or serverless.
shared_path = os.getcwd() + "/../../shared"
# Add the shared directory to the Python path.
sys.path.append(shared_path)
# Import a function from shared_library.py
from shared_library import multiply
# Use the function.
result = multiply(2, 3)
print(result)
Csomag érvényesítése
Fontos, hogy mindig ellenőrizze a csomagkonfigurációt, különösen akkor, ha a csomagok fájlokat és konfigurációkat osztanak meg. A databricks bundle validate parancs biztosítja, hogy a csomagban megadott változók, fájlok és elérési utak létezhessenek, megfelelően örökölve és konfigurálva legyenek, és a problémákra vonatkozó információkat adja ki, hogy azok a telepítés előtt kijavíthatók legyenek. Lásd : databricks-csomag ellenőrzése.
Az üzembe helyezés előtt futtassa az alábbi parancsot minden csomaghoz:
databricks bundle validate
Megosztott csomagok engedélyei
A szervezeten belül a csomagokat gyakran fejlesztik, telepítik és futtatják különböző, különböző felelősségi és engedélyszinttel rendelkező személyek. Előfordulhat, hogy minden felhasználónak képesnek kell lennie a csomagok megtekintésére, néhánynak képesnek kell lennie a csomagmódosítások üzembe helyezésére és az erőforrások futtatására a célfejlesztési munkaterületen, néhánynak képesnek kell lennie a csomagmódosítások üzembe helyezésére és az erőforrások éles környezetben való futtatására, valamint a szolgáltatásnevet használó automatizált munkafolyamatoknak képesnek kell lenniük az erőforrások csomagban való futtatására. Annak érdekében, hogy a megosztott csomagok hatékonyan kezelhetők legyenek a szervezet összes felhasználója számára, állítsa be a legfelső szintű engedélyeket és az éles célengedélyeket. A legfelső szintű engedélyekről, amelyek engedélyeket alkalmaznak egy csomag összes erőforrására, tekintse meg az engedélyeket.
Jótanács
A munkaterületen a deklaratív automatizálási csomagok megkönnyítik a csomagokon való együttműködést. Lásd Együttműködés csomagokkal a munkaterületen.
Egy megosztott csomag például a databricks.yml következő lehet:
# databricks.yml
bundle:
name: shared_bundle
include:
- resources/*.yml
permissions:
- level: CAN_VIEW
group_name: all_users
- level: CAN_MANAGE
group_name: data_engineering_users
- level: CAN_RUN
service_principal_name: 123456-abcdef
targets:
dev:
mode: development
default: true
workspace:
host: https://my-workspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE