Megosztás a következőn keresztül:


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 sablont használja, amelyet a Egyéni Csomagsablon Oktatóanyag hozott létre:

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ában template található fájl. Ha a databricks.yml.tmpl fájl további *.yml.tmpl konfigurációs sablonokra hivatkozik, adja meg ezeknek a helyét a include 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.jsonJSON-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_ifkonfigurá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 .barné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_namevá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