Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A Databricks Asset Bundles támogatja a helyettesítéseket és az egyéni változókat, amelyek modulárisabbá és újrafelhasználhatóbbá teszik a csomagkonfigurációs fájlokat. A helyettesítések és az egyéni változók egyaránt lehetővé teszik az értékek dinamikus lekérését, hogy a beállítások meghatározhatók legyenek a csomag üzembe helyezésekor és futtatásakor.
Tipp.
A feladatparaméterek értékeihez dinamikus értékhivatkozásokkal is átadhatja a feladatfuttatások kontextusát a feladattevékenységek számára. Lásd: Mi az a dinamikus értékhivatkozás? és a feladatok paraméterezése.
Helyettesítések
A helyettesítések használatával lekérheti azoknak a beállításoknak az értékeit, amelyek a csomag üzembe helyezésének és futtatásának kontextusa alapján változhatnak. A helyettesítésekkel például hivatkozhat a köteg name, a köteg target és a munkaterület userName mezőinek értékeire a csomagkonfigurációs fájlban lévő root_path munkaterület összeállításához.
bundle:
name: hello-bundle
workspace:
root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
targets:
dev:
default: true
Ha someone@example.com üzembe helyezte ezt a csomagot, az a gyökérútvonalon /Workspace/Users/someone@example.com/.bundle/hello-bundle/my-envs/devlesz üzembe helyezve.
A névvel ellátott erőforrásokhoz helyettesítőket is létrehozhat. Például a következő folyamatdefinícióhoz használhatja ${resources.pipelines.my_pipeline.target} a folyamat célértékét:
resources:
pipelines:
my_pipeline:
name: my_pipeline
schema: pipeline_bundle_${bundle.target}
libraries:
- notebook:
path: ../src/my_pipeline.ipynb
configuration:
bundle.sourcePath: ${workspace.file_path}/src
Az érvényes helyettesítések meghatározásához használja a csomagkonfigurációs referenciát, az erőforráskonfigurációs hivatkozást vagy a REST API-referenciaban dokumentált megfelelő objektumok sémahierarchiáját vagy a bundle schema parancs kimenetét.
Tipp.
Az erőforrásokhoz elérhető helyettesítések teljes listáját lásd: Databricks CLI GitHub-adattár out.fields.txt
Íme néhány gyakran használt helyettesítés:
${bundle.name}${bundle.target} # Use this substitution instead of ${bundle.environment}${workspace.host}${workspace.current_user.domain_friendly_name}${workspace.current_user.short_name}${workspace.current_user.userName}${workspace.file_path}${workspace.root_path}${resources.jobs.<job-name>.id}${resources.models.<model-name>.name}${resources.pipelines.<pipeline-name>.name}
Egyéni változók
A csomagban egyszerű és összetett egyéni változókat is meghatározhat, így számos forgatókönyvhöz szükséges értékek dinamikus lekérését teheti lehetővé. Az egyéni változók deklarálva vannak a csomagkonfigurációs fájlokban a variables leképezésben vagy egy variable-overrides.json fájlban. A variables leképezésről további információért lásd a változókat.
A következő példakonfiguráció határozza meg a változókat my_cluster_id és my_notebook_patha következőket:
variables:
my_cluster_id:
description: The ID of an existing cluster.
default: 1234-567890-abcde123
my_notebook_path:
description: The path to an existing notebook.
default: ./hello.py
Ha a deklaráció részeként nem ad meg default értéket egy változóhoz, akkor azt a csomagparancsok végrehajtásakor, egy környezeti változón keresztül, a csomagkonfigurációs fájlok más részén vagy a .databricks/bundle/<target>/variable-overrides.json csomagprojekt fájljában kell beállítania. Lásd : Változó értékének beállítása.
Hivatkozás egy változóra
Ha egyéni változóra szeretne hivatkozni a csomagkonfigurációban, használja a változó helyettesítését${var.<variable_name>}. A következő konfiguráció például a my_cluster_id és my_notebook_path változókra hivatkozik:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: ${var.my_cluster_id}
notebook_task:
notebook_path: ${var.my_notebook_path}
Változó értékének beállítása
Ha nem állított be default értéket egy változóhoz, vagy ha ideiglenesen felül szeretné bírálni default egy változó értékét, adja meg a változó új ideiglenes értékét az alábbi módszerek egyikével.
Megjegyzés
A kötegváltozók üzembehelyezés idejére vonatkozó változók. Ezeket a csomag üzembe helyezésekor értelmezi a rendszer. Ha például egy feladatot futtat, az egy korábban üzembe helyezett feladatot és az üzembe helyezéshez konfigurált változókat futtat, így a feladat futtatásához különböző értékek átadása nem lesz érvényes. Ehelyett adjon át értékeket egy feladat futtatásához a feladat paraméterek segítségével. Lásd : Feladatparaméterek átadása.
Adja meg a változó értékét egy
bundleparancs részeként, példáulvalidate: ,deployvagyrun. Ehhez használja azt a lehetőséget--var="<key>=<value>", amely<key>a változó neve, és<value>a változó értéke. Ha például abundle validateparancs részeként meg szeretné adni a névvel ellátott1234-567890-abcde123változó értékétmy_cluster_id, és meg szeretné adni a névvel ellátott./hello.pyváltozó értékétmy_notebook_path, futtassa a következőt:databricks bundle validate --var="my_cluster_id=1234-567890-abcde123,my_notebook_path=./hello.py" # Or: databricks bundle validate --var="my_cluster_id=1234-567890-abcde123" --var="my_notebook_path=./hello.py"Adja meg a változó értékét egy környezeti változó beállításával. A környezeti változó nevének a következővel
BUNDLE_VAR_kell kezdődnie: . A környezeti változók beállításához tekintse meg az operációs rendszer dokumentációját. Ha például meg szeretné adni a névvel ellátott változó értékét1234-567890-abcde123, és meg szeretné adni a névvel ellátottmy_cluster_idváltozó értékét./hello.py, futtassa a következő parancsot, mielőtt meghívna egymy_notebook_pathparancsot, példáulbundle:validatedeployrunLinux és macOS esetén:
export BUNDLE_VAR_my_cluster_id=1234-567890-abcde123 && export BUNDLE_VAR_my_notebook_path=./hello.pyWindows esetén:
"set BUNDLE_VAR_my_cluster_id=1234-567890-abcde123" && "set BUNDLE_VAR_my_notebook_path=./hello.py"Vagy adja meg a változó értékét egy
bundleparancs részeként, példáulvalidatedeployLinux ésrunmacOS esetén:BUNDLE_VAR_my_cluster_id=1234-567890-abcde123 BUNDLE_VAR_my_notebook_path=./hello.py databricks bundle validateVagy Windows esetén:
"set BUNDLE_VAR_my_cluster_id=1234-567890-abcde123" && "set BUNDLE_VAR_my_notebook_path=./hello.py" && "databricks bundle validate"Adja meg a változó értékét a csomagkonfigurációs fájlokban a
variableséstargetsleképezés használatával, az alábbi formátum szerint.variables: <variable-name>: <value>Ha például a
my_cluster_idnevű változók értékeit szeretné beállítani, ésmy_notebook_pathkét különálló célhoz:targets: dev: variables: my_cluster_id: 1234-567890-abcde123 my_notebook_path: ./hello.py prod: variables: my_cluster_id: 2345-678901-bcdef234 my_notebook_path: ./hello.pyAdja meg a változó értékét a
.databricks/bundle/<target>/variable-overrides.jsonfájlban a következő formátumban:{ "<variable-name>": "<variable-value>" }Ha például a fejlesztési célhoz
my_cluster_idésmy_notebook_pathnevű változók értékeit szeretné megadni, hozzon létre egy fájl.databricks/bundle/dev/variable-overrides.json, és állítsa a tartalmát a következőre:{ "my_cluster_id": "1234-567890-abcde123", "my_notebook_path": "./hello.py" }A
variable-overrides.jsonfájlban összetett változókat is definiálhat.
Megjegyzés
Bármelyik módszert is választja a változó értékek megadásához, használja ugyanazt a megközelítést az üzembe helyezési és a futtatási szakaszokban is. Ellenkező esetben előfordulhat, hogy váratlan eredményeket kap az üzembe helyezés időpontja és a meglévő üzembe helyezésen alapuló feladat vagy folyamatfuttatás között.
Elsőbbségi sorrend
A Databricks parancssori felület a változók értékeit a következő sorrendben keresi meg, és leáll, amikor egy változó értékét keresi:
- A parancs részeként
--varmegadott beállításokonbundlebelül. - Minden olyan környezeti változókészleten belül, amely a következővel
BUNDLE_VAR_kezdődik: . - A
variable-overrides.jsonfájlon belül, ha létezik. - A csomagkonfigurációs fájlokban lévő
variablesleképezéseken belül mindentargetsleképezésen belül. - A változó definíciójának bármilyen
defaultértéke a csomagkonfigurációs fájlok legfelső szintűvariablesleképezései között.
Összetett változó definiálása
Egy egyéni változót alapértelmezetten sztring típusúnak tekintenek, hacsak nem határozza meg összetett változóként. Ha összetett típusú egyéni változót szeretne definiálni a csomagkonfigurációban, állítsa typecomplex.
Megjegyzés
A type beállítás számára egyetlen érvényes érték a complex. Emellett a köteg érvényesítése meghiúsul, ha type be van állítva complex , és a default változóhoz definiált érték egyetlen érték.
Az alábbi példában a fürtbeállítások egy egyéni, összetett változóban vannak definiálva my_cluster:
variables:
my_cluster:
description: 'My cluster definition'
type: complex
default:
spark_version: '13.2.x-scala2.11'
node_type_id: 'Standard_DS3_v2'
num_workers: 2
spark_conf:
spark.speculation: true
spark.databricks.delta.retentionDurationCheck.enabled: false
resources:
jobs:
my_job:
job_clusters:
- job_cluster_key: my_cluster_key
new_cluster: ${var.my_cluster}
tasks:
- task_key: hello_task
job_cluster_key: my_cluster_key
A .databricks/bundle/<target>/variable-overrides.json fájlban is definiálhat egy összetett változót, ahogyan az a következő példában látható:
{
"my_cluster": {
"spark_version": "13.2.x-scala2.11",
"node_type_id": "Standard_DS3_v2",
"num_workers": 2
}
}
Objektum azonosítóértékének lekérése
A alert, cluster_policy, cluster, dashboard, instance_pool, job, metastore, notification_destination, pipeline, query, service_principal és warehouse objektumtípusokhoz megadhat egy egyéni lookup változót az elnevezett objektum azonosítójának lekéréséhez, ebben a formátumban:
variables:
<variable-name>:
lookup:
<object-type>: '<object-name>'
Ha egy változóhoz keresési érték van definiálva, a rendszer a megadott névvel rendelkező objektum azonosítóját használja a változó értékeként. Ez biztosítja, hogy az objektum helyes feloldott azonosítója mindig a változóhoz legyen használva.
Megjegyzés
Hiba akkor fordul elő, ha a megadott névvel rendelkező objektum nem létezik, vagy ha egynél több objektum van a megadott névvel.
Az alábbi konfigurációban például a ${var.my_cluster_id} a 12.2 megosztott fürt azonosítójával lesz lecserélve.
variables:
my_cluster_id:
description: An existing cluster
lookup:
cluster: '12.2 shared'
resources:
jobs:
my_job:
name: 'My Job'
tasks:
- task_key: TestTask
existing_cluster_id: ${var.my_cluster_id}
Kimeneti helyettesítés és változóértékek
Annak érdekében, hogy a helyettesítések és változók helyesen legyenek megadva és elemezve legyenek a Databricks-eszközcsomagok által, futtassa a következőt databricks bundle validate: . Lásd : databricks-csomag ellenőrzése. A csomag üzembe helyezésekor használt értékek megtekintéséhez használja a --output json következő lehetőséget:
databricks bundle validate --output json
Például egy feladatfeladatban definiált és használt változót my_cluster_id tartalmazó csomag esetén:
bundle:
name: variables_bundle
variables:
my_cluster_id:
default: 1234-567890-abcde123
resources:
jobs:
variables_bundle_job:
name: variables_bundle_job
tasks:
- task_key: notebook_task
existing_cluster_id: ${var.my_cluster_id}
notebook_task:
notebook_path: ../src/notebook.ipynb
A databricks bundle validate séma kimenete a következő:
{
"bundle": {
"..."
"name": "variables_bundle",
"target": "dev",
"..."
},
"resources": {
"jobs": {
"variables_bundle_job": {
"deployment": {
"kind": "BUNDLE",
"metadata_file_path": "/Workspace/Users/someone@example.com/.bundle/variables_bundle/dev/state/metadata.json"
},
"max_concurrent_runs": 4,
"name": "[dev someone] variables_bundle_job",
"tasks": [
{
"existing_cluster_id": "1234-567890-abcde123",
"notebook_task": {
"notebook_path": "/Workspace/Users/someone@example.com/.bundle/variables_bundle/dev/files/variables_bundle/src/notebook"
},
"task_key": "notebook_task"
},
],
"..."
}
}
},
"..."
"variables": {
"my_cluster_id": {
"default": "1234-567890-abcde123",
"value": "1234-567890-abcde123"
}
},
"..."
}