Databricks Asset Bundle projektsablonok
A Databricks-eszközcsomagok forrásfájlként írják le a Databricks-erőforrásokat, például a feladatokat, a folyamatokat és a jegyzetfüzeteket, lehetővé teszik, hogy a forrásfájlok mellett metaadatokat is tartalmazzon az infrastruktúra és más erőforrások kiépítéséhez, valamint egy projekt teljes körű definícióját adja meg, amelyek mindegyike egyetlen üzembe helyezhető projektként van csomagolva. Lásd: 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, az üzembe helyezési folyamat során gyakran használt DevOps-infrastruktúra-attribútumok (IaC) létrehozásával.
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 egyéni tárolókörnyezetet meghatározó csomagsablon létrehozásával.
A Databricks alapértelmezett csomagsablonokat, de egyéni csomagsablonokat is létrehozhat. A felhasználók ezután inicializálhatják a csomagokat a bundle init parancshasználatával, megadva egy alapértelmezett sablont vagy az egyéni sablont.
Csomag létrehozása sablonnal
Ha Azure Databricks-csomagsablont szeretne használni a csomag létrehozásához, használja a Databricks CLIbundle init
parancsot a használni kívánt sablon nevének megadásával. Az alábbi parancs például létrehoz egy csomagot az alapértelmezett Python-csomagsablon használatával:
databricks bundle init default-python
Egyéni csomagsablon használatához adja át a sablon helyi elérési útját vagy távoli URL-címét a Databricks CLIbundle init
parancsnak.
A következő parancs az
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Ha nem ad meg sablont, a bundle init
parancssora az elérhető alapértelmezett sablonok készletét kéri, amelyek közül választhat.
Alapértelmezett csomagsablonok
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 DLT-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 |
Fejlett full stack sablon új MLOps Stack projektek indítására. Lásd: mlops-stacks és Databricks Asset Bundles for MLOps Stacks. |
Egyéni csomagsablonok
A csomagsablonok Go-csomag templating szintaxist használnak, amely rugalmasságot biztosít a létrehozható egyéni csomagsablonok számára. Tekintse meg a Go-csomag sablon dokumentációját.
sablonprojekt struktúrája
Egy csomagsablonprojektnek legalább a következővel kell rendelkeznie:
- Egy
databricks_template_schema.json
fájl a projekt gyökérkönyvtárában, amely egy felhasználói bemeneti tulajdonságot határoz meg a csomagprojekt neve számára. Lásd sablonséma. - 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. Lásd: Konfigurációs sablonok.
Emellett a csomagsablon projekt mappastruktúráját és a benne lévő fájlokat template
a sablonnal létrehozott csomagok tükrözik. Ha például azt szeretné, hogy a sablon hozzon létre egy csomagot egy egyszerű jegyzetfüzettel a src
mappában, és egy feladatdefiníciót, amely a jegyzetfüzetet a resources
mappában futtatja, a sablonprojektet a következőképpen rendszerezheti:
basic-bundle-template
├── databricks_template_schema.json
└── template
└── {{.project_name}}
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── simple_notebook.ipynb
Tipp.
A projektmappa neve és a csomagsablon feladatdefiníciós fájljának neve sablonváltozót használ. A sablonsegítőkről és a változókról további információt Sablonsegítők és -változókcímű témakörben talál.
sablonséma
Az egyéni csomagsablonprojektnek tartalmaznia kell egy databricks_template_schema.json
JSON-fájlt, amely a projekt gyökérkönyvtárában található. Ez a fájl definiálja a Databricks parancssori felület által a bundle init
parancs futtatásakor használt mezőket, például a parancssori szöveget.
Az alábbi alapszintű databricks_template_schema.json
fájl definiál egy bemeneti változót project_name
a kötegprojekthez, amely tartalmazza a parancssori üzenetet és az alapértelmezett értéket. Ezután egy sikerüzenetet határoz meg a bunde projekt inicializálásához, amely az üzenet bemeneti változójának értékét használja.
{
"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."
}
Sablonséma mezők
A databricks_template_schema.json
fájl lehetővé teszi, hogy a bemeneti változókat a felhasználótól a properties
mezőben, valamint más mezőkben definiáljuk a csomag inicializálása során az információ gyűjtéséhez és az inicializálás testreszabásához.
A bemeneti változók a sablonséma properties
mezőjében vannak definiálva. Minden bemeneti változó a csomag initalizálása során a felhasználónak történő kéréshez szükséges metaadatokat határozza meg. A változó értéke ezután elérhető sablonváltozó szintaxisával, például {{.project_name}}
.
Egyes mezők értékeit is beállíthatja a köteg inicializálási folyamatának testreszabásához.
A támogatott sémamezők az alábbi táblázatban találhatók.
Séma mező | Leírás |
---|---|
properties |
A kötegsablon bemeneti változóinak definíciói. A Databricks azt javasolja, hogy adjon meg legalább egy bemeneti változót, amely a kötegprojekt neve. |
properties.<variable_name> |
A bemeneti változó neve. |
properties.<variable_name>.default |
Alapértelmezett érték, amelyet akkor kell használni, ha a felhasználó nem adja meg a --config-file értéket a bundle init parancs részeként, vagy a parancssorban, amikor a rendszer erre kéri. |
properties.<variable_name>.description |
A bemeneti változóhoz társított felhasználói üzenet. |
properties.<variable_name>.enum |
A tulajdonság lehetséges értékeinek listája, például "enum": ["azure", "aws", "gcp"] . Ha ez a mező meg van határozva, a Databricks parancssori felület megjeleníti a parancssorban lévő listában szereplő értékeket, hogy megkérje a felhasználót egy érték kiválasztására. |
properties.<variable_name>.order |
A bemeneti tulajdonságok relatív sorrendjét meghatározó egész szám. Ez azt a sorrendet szabályozza, amelyben a bemeneti változókra vonatkozó kérések megjelennek a parancssorban. |
properties.<variable_name>.pattern |
A felhasználói bemenet ellenőrzéséhez használandó regexp minta, például "pattern": "^[^ .\\\\/]{3,}$" . A támogatott regexp szintaxist lásd a https://github.com/google/re2/wiki/Syntaxcímű részben. |
properties.<variable_name>.pattern_match_failure_message |
A felhasználó számára megjelenő üzenet, ha a felhasználó által megadott érték nem egyezik meg a megadott mintával, például Project name must be at least 3 characters long and cannot contain the following characters: \"\\\", \"/\", \" \" and \".\"." . |
properties.<variable_name>.skip_prompt_if |
Hagyja ki a bemeneti változó kérését, ha ezt a sémát a már meglévő konfiguráció kielégíti. Ebben az esetben a tulajdonság alapértelmezett értékét használja a rendszer. Egy példa erre: mlops-stacks sablon. Csak const összehasonlítások támogatottak. |
properties.<variable_name>.skip_prompt_if.properties.<previous_variable_name>.const |
Ha a <previous_variable_name> értéke megegyezik a skip_prompt_if konfigurált állandóval, a rendszer kihagyja a <variable_name> kérését. |
welcome_message |
Az első üzenet, amely kimenetként jelenik meg, mielőtt a felhasználót kéri a bemenetre. |
success_message |
A sablon sikeres inicializálása után nyomtatandó üzenet. |
min_databricks_cli_version |
A Databricks CLI azon minimális semver verziója, amelyet a sablon megkövetel.
databricks bundle init sikertelen, ha a CLI-verzió kisebb ennél a verziónál. |
version |
Jövőbeli használatra fenntartva. A séma verziója. Ezzel állapítható meg, hogy a séma kompatibilis-e az aktuális CLI-verzióval. |
konfigurációs sablonok
Az egyéni csomagsablonnak tartalmaznia kell egy databricks.yml.tmpl
fájlt a csomagsablon-projekt egy template
mappájában, amely a csomagprojekt databricks.yml
konfigurációs fájl létrehozásához használatos. Az erőforrások konfigurációs fájljainak sablonjai a resources
mappában hozhatók létre. Töltse fel ezeket a sablonfájlokat a YAML konfigurációs sablonnal.
Az alábbi egyszerű példakonfigurációs sablonok databricks.yml és a társított *_job.yml meghatározzák a csomag nevét és két célkörnyezetét, és meghatároznak egy feladatot, amely a kötegben futtatja a jegyzetfüzetet a sablon használatával létrehozott csomagokhoz. Ezek a konfigurációs sablonok kihasználják a csomaghelyettesítéseket és a csomagsablon-segítőket.
template/{{.project_name}}/databricks.yml.tmpl
:
# databricks.yml
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
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 -}}
template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl
:
# {{.project_name}}_job.yml
# 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
sablon segédjei és változói
A sablonsegítők a Databricks által biztosított függvények, amelyeket a sablonfájlokban használhat a felhasználóspecifikus információk futásidejű lekéréséhez vagy a sablonmotor használatához. Saját sablonváltozókat is definiálhat.
A databricks-csomagsablon-projektekhez az alábbi sablonsegítők érhetők el. A Go-sablonok és -változók használatáról további információt Go-sablonokcímű témakörben talál.
Segítő | Leírás |
---|---|
{{url}} |
Egy alias a https://pkg.go.dev/net/url#Parse-hez. Ez lehetővé teszi a url.URL összes metódusának használatát. |
{{regexp}} |
Egy alias a https://pkg.go.dev/regexp#Compile-hez. Ez lehetővé teszi a regexp.Regexp összes metódusának használatát. |
{{random_int}} |
Intként egy nem negatív pszeudo-véletlenszerű számot ad vissza a félig nyitott intervallumban (0,n). |
{{uuid}} |
Sztringként egy UUID-t ad vissza, amely egy 128 bites (16 bájtos) univerzális egyedi IDentifier az RFC 4122-ben meghatározottak szerint. Ez az azonosító a sablon végrehajtásának időtartamára stabil, és a sablonkészítők databricks.yml bundle.uuid mezőjének kitöltésére használhatók. |
{{bundle_uuid}} |
A csomag egyedi azonosítója. A függvény több meghívása ugyanazt az UUID-t adja vissza. |
{{pair}} |
Kulcsértékpár. Ez a map segéd segítségével készíti el a sablonban használandó térképeket. |
{{map}} |
A párok listáját térképobjektummá alakítja. Ez akkor hasznos, ha több objektumot ad át a tárkönyvtárban definiált sablonoknak. Mivel a Go szövegsablon szintaxisa csak egyetlen argumentum megadását teszi lehetővé, ez a függvény a korlátozás megkerülésére használható. Például a következő sorban {{template "my_template" (map (pair "foo" $arg1) (pair "bar" $arg2))}} , $arg1 és $arg2 a my_template belülről .foo és .bar néven lehet hivatkozni. |
{{smallest_node_type}} |
A legkisebb csomóponttípust adja vissza. |
{{path_separator}} |
Az elérési útvonal elválasztó karakter az operációs rendszerben. Ez / a Unix-alapú rendszerekhez és \ a Windows-hoz. |
{{workspace_host}} |
A munkaterület-gazdagép URL-címe, amelyre a felhasználó jelenleg hitelesítve van. |
{{user_name}} |
A sablont inicializáló felhasználó teljes neve. |
{{short_name}} |
A sablont inicializáló felhasználó rövid neve. |
{{default_catalog}} |
Az alapértelmezett munkaterület-katalógust adja vissza. Ha nincs alapértelmezett érték, vagy ha a Unity Katalógus nincs engedélyezve, ez egy üres sztringet ad vissza. |
{{is_service_principal}} |
Az, hogy az aktuális felhasználó szolgáltatásfőfelhasználó-e. |
{{ skip <glob-pattern-relative-to-current-directory> }} |
A sablonmotor kihagyja az összes olyan fájl és könyvtár generálását, amely megfelel a bemeneti glob mintának. Egy példa erre: mlops-stacks sablon. |
Egyéni sablonsegítők
Saját sablonsegítők definiálásához hozzon létre egy sablonfájlt a sablonprojekt library
mappájában, és használja a Go templating szintaxist a segítők definiálásához. Például egy library/variables.tmpl
fájl alábbi tartalma határozza meg az cli_version
és model_name
változókat. Ha ezt a sablont használja egy csomag inicializálásához, a model_name
változó értéke a sablonsémafájlban definiált input_project_name
mező használatával jön létre. Ennek a mezőértéknek az értéke a felhasználói bemenet a parancssor után.
{{ define `cli_version` -}}
v0.240.0
{{- end }}
{{ define `model_name` -}}
{{ .input_project_name }}-model
{{- end }}
A teljes példa megtekintéséhez tekintse meg a mlops-stacks sablonváltozók fájljának.
A csomagsablon tesztelése
Végül tesztelje a sablont. A Databricks parancssori felületével például inicializálhat egy új csomagot az előző szakaszokban definiált sablon használatával:
databricks bundle init basic-bundle-template
A parancsnál What is your bundle project name?
írja be 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
├── resources
│ └── my_test_bundle_job.yml
└── src
└── simple_notebook.ipynb
A databricks.yml
fájl és feladat mostantól testre van szabva:
# databricks.yml
# This is the configuration for the Databricks Asset Bundle my-test-bundle.
bundle:
name: my_test_bundle
include:
- resources/*.yml
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
# my_test_bundle_job.yml
# 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
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(z) databricks_template_schema.json
fájlt a csomag gyökeréhez képest egy másik könyvtárba helyezheti. Ezután a bundle init
parancs --template-dir
beállításával hivatkozhat arra a 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.