Databricks Asset Bundle projektsablonok
Ez a cikk a Databricks-eszközcsomag-sablonok szintaxisát ismerteti. A csomagok lehetővé teszik az Azure Databricks-munkafolyamatok programozott kezelését. Mik azok a Databricks-eszközcsomagok?
A csomagsablonok lehetővé teszik a felhasználók számára, hogy egységes, megismételhető módon hozzanak létre csomagokat a mappastruktúrák létrehozásával, a lépések és feladatok, tesztek és más DevOps-infrastruktúrakódként (IaC) attribútumok létrehozásával, amelyek gyakran előfordulnak a fejlesztési környezet üzembehelyezési folyamataiban.
Ha például rutinszerűen futtat olyan Databricks-feladatokat, amelyek telepítéskor időigényes fordítási lépéssel igényelnek egyéni csomagokat, felgyorsíthatja a fejlesztési ciklust egy olyan csomagsablon létrehozásával, amely támogatja az egyéni tárolókörnyezeteket.
A kötegsablonok meghatározzák a létrehozandó csomag címtárstruktúráját, és tartalmazzák databricks.yml.tmpl
a konfigurációs fájlsablont, valamint egy databricks_template_schema.json
felhasználó-parancssori változókat tartalmazó fájlt.
Alapértelmezett csomagsablon használata
Ha azure Databricks alapértelmezett csomagsablont szeretne használni a csomag létrehozásához, használja a Databricks CLI bundle init
parancsot, és adja meg a használni kívánt alapértelmezett sablon nevét. Az alábbi parancs például létrehoz egy csomagot az alapértelmezett Python-csomagsablon használatával:
databricks bundle init default-python
Ha nem ad meg alapértelmezett sablont, a bundle init
parancs megjeleníti az elérhető sablonok készletét, amelyek közül választhat.
Az Azure Databricks a következő alapértelmezett csomagsablonokat biztosítja:
Sablon | Leírás |
---|---|
default-python |
Sablon Python és Databricks használatához. Ez a sablon létrehoz egy csomagot egy feladattal és egy Delta Live Tables-folyamattal. Lásd: default-python. |
default-sql |
Az SQL Databricks-lel való használatához használható sablon. Ez a sablon egy konfigurációs fájlt tartalmaz, amely meghatároz egy SQL-lekérdezéseket futtató feladatot egy SQL-raktárban. Lásd: default-sql. |
dbt-sql |
Egy sablon, amely a dbt-core-t használja a helyi fejlesztéshez és a csomagok üzembe helyezéséhez. Ez a sablon tartalmazza azokat a konfigurációkat, amelyek egy dbt-feladattal rendelkező feladatot határoznak meg, valamint egy konfigurációs fájlt, amely a dbt-profilokat határozza meg az üzembe helyezett dbt-feladatokhoz. Lásd: dbt-sql. |
mlops-stacks |
Speciális teljes veremsablon új MLOps Stacks-projektek indításához. Lásd: mlops-stacks és Databricks Asset Bundles for MLOps Stacks. |
Egyéni csomagsablon használata
Ha az Azure Databricks alapértelmezett csomagsablonjaitól eltérő csomagsablont szeretne használni, adja át a sablon helyi elérési útját vagy távoli URL-címét a Databricks CLI bundle init
parancsnak.
A következő parancs például az dab-container-template
egyéni csomagsablon oktatóanyagában létrehozott sablont használja:
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Egyéni csomagsablon létrehozása
A csomagsablonok Go-csomag templating szintaxist használnak. Tekintse meg a Go-csomag sablon dokumentációját.
Egy csomagsablonprojektnek legalább a következővel kell rendelkeznie:
- A
databricks_template_schema.json
projekt gyökérkönyvtárában található fájl, amely a kötegprojekt nevének egy felhasználó-parancssori változót határoz meg. - A
databricks.yml.tmpl
sablonnal létrehozott csomagok konfigurációját meghatározó mappábantemplate
található fájl. Ha adatabricks.yml.tmpl
fájl további*.yml.tmpl
konfigurációs sablonokra hivatkozik, adja meg ezeknek a helyét ainclude
leképezésben.
Igény szerint almappákat és fájlokat is hozzáadhat ahhoz a template
mappához, amelyet tükrözni szeretne a sablon által létrehozott csomagokban.
Felhasználói kérés változóinak definiálása
Az alapszintű csomagsablon létrehozásának első lépése egy sablonprojekt-mappa és egy projektgyökérben elnevezett databricks_template_schema.json
fájl létrehozása. Ez a fájl tartalmazza azokat a változókat, amelyekhez a felhasználók bemeneti értékeket adnak, amikor a sablon használatával bundle init
hoznak létre egy köteget. A fájl formátuma a JSON-séma specifikációját követi.
mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json
Adja hozzá a következőt a databricks_template_schema.json
fájlhoz, majd mentse a fájlt:
{
"properties": {
"project_name": {
"type": "string",
"default": "basic_bundle",
"description": "What is the name of the bundle you want to create?",
"order": 1
}
},
"success_message": "\nYour bundle '{{.project_name}}' has been created."
}
Ebben a fájlban:
project_name
az egyetlen bemeneti változó neve.default
nem kötelező alapértelmezett érték, ha a felhasználó--config-file
nem adja meg az értéket abundle init
parancs részeként, vagy felülírja a felhasználó a parancssorban.description
a bemeneti változóhoz társított felhasználói kérés, ha a felhasználó--config-file
nem ad meg értéket abundle init
parancs részeként.order
választható sorrend, amelyben minden felhasználói kérés megjelenik, ha a felhasználó--config-file
nem ad meg értéket abundle init
parancs részeként. Haorder
nincs megadva, akkor a felhasználói kérések abban a sorrendben jelennek meg, amelyben szerepelnek a sémában.success_message
egy nem kötelező üzenet, amely a sikeres projektlétrehozáskor jelenik meg.
A mappastruktúra létrehozása
Ezután hozza létre a szükséges template
mappát, és hozza létre benne a mappastruktúrát. Ezt a struktúrát a sablonnal létrehozott csomagok tükrözik. Helyezzen el minden olyan fájlt is, amelyet bele szeretne foglalni ezekbe a mappákba. Ez az egyszerű csomagsablon egy src
mappában tárolja a fájlokat, és egy egyszerű jegyzetfüzetet tartalmaz.
mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb
Adja hozzá a következőt a simple_notebook.ipynb
fájlhoz:
print("Hello World!")
Konfigurációs sablonfájlok feltöltése
Most hozza létre a szükséges databricks.yml.tmpl
fájlt a template
mappában:
touch basic-bundle-template/template/databricks.yml.tmpl
Töltse ki ezt a fájlt a YAML alapszintű konfigurációs sablonnal. Ez a konfigurációs sablon létrehozza a csomag nevét, egy feladatot a megadott jegyzetfüzetfájl használatával, és két célkörnyezetet a sablon használatával létrehozott csomagokhoz. Emellett kihasználja a csomaghelyettesítések előnyeit is, ami erősen ajánlott. Lásd a köteghelyettesítéseket.
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.
bundle:
name: {{.project_name}}
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
dev:
mode: development
default: true
workspace:
host: {{workspace_host}}
prod:
mode: production
workspace:
host: {{workspace_host}}
root_path: /Shared/.bundle/prod/${bundle.name}
{{- if not is_service_principal}}
run_as:
# This runs as {{user_name}} in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: {{user_name}}
{{end -}}
A csomagsablon tesztelése
Végül tesztelje a sablont. Hozzon létre egy új csomagprojektmappát, majd a Databricks parancssori felületével inicializáljon egy új csomagot a sablon használatával:
mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template
A parancssorba What is your bundle project name?
írja be a következőt my_test_bundle
:
A tesztcsomag létrehozása után a sémafájl sikeres üzenete kimenetként jelenik meg. Ha megvizsgálja a my-test-bundle
mappa tartalmát, a következőket kell látnia:
my-test-bundle
├── databricks.yml
└── src
└── simple_notebook.ipynb
A databricks.yml fájl pedig testre lett szabva:
# This is the configuration for the Databricks Asset Bundle my-test-bundle.
bundle:
name: my-test-bundle
# The main job for my-test-bundle
resources:
jobs:
my-test-bundle_job:
name: my-test-bundle_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
targets:
# The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
dev:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
# The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
prod:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/.bundle/prod/${bundle.name}
run_as:
# This runs as someone@example.com in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: someone@example.com
A sablon megosztása
Ha meg szeretné osztani ezt a csomagsablont másokkal, a verziókövetésben tárolhatja azt bármely olyan szolgáltatónál, amelyet a Git támogat, és amelyhez a felhasználók hozzáférhetnek. Ha Git URL-címmel szeretné futtatni a bundle init
parancsot, győződjön meg arról, hogy a databricks_template_schema.json
fájl a Git URL-címéhez képest a gyökérhelyen van.
Tipp.
A fájlt egy másik mappába helyezheti databricks_template_schema.json
a csomag gyökeréhez képest. Ezután a parancs beállításával --template-dir
hivatkozhat arra a bundle init
mappára, amely tartalmazza a databricks_template_schema.json
fájlt.
Következő lépések
- Tallózzon a Databricks által létrehozott és karbantartott további sablonok között. Tekintse meg a csomagminták adattárát a GitHubon.
- Az MLOps Stacks databricks-eszközcsomag-sablonokkal való használatához lásd : Databricks Asset Bundles for MLOps Stacks.
- További információ a Go-csomag templatingjáról. Tekintse meg a Go-csomag sablon dokumentációját.