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


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á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.

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 inithoznak 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 a bundle 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 a bundle 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 a bundle init parancs részeként. Ha order 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