Configurazione del bundle di asset di Databricks
Questo articolo descrive la sintassi per i file di configurazione del bundle di asset di Databricks, che definiscono i bundle di asset di Databricks. Consultare Che cosa sono i bundle di asset di Databricks?
Per creare e usare pacchetti, vedere sviluppo di pacchetti di asset Databricks.
Panoramica
Un file di configurazione del bundle deve essere espresso in formato YAML e deve contenere almeno il mapping di primo livello del bundle. Ogni bundle deve contenere almeno un file di configurazione bundle (e uno soltanto) denominato databricks.yml
. Se sono presenti più file di configurazione bundle, è necessario fare riferimento al file databricks.yml
usando il mapping include
.
Per informazioni dettagliate su ogni mappatura di primo livello, vedere le mappature .
Per altre informazioni su YAML, vedere la specifica e l'esercitazione ufficiali di YAML.
Specificazione
Il seguente YAML fornisce la specifica di configurazione per gli Asset Bundle di Databricks.
# This is the default bundle configuration if not otherwise overridden in
# the "targets" top-level mapping.
bundle: # Required.
name: string # Required.
databricks_cli_version: string
cluster_id: string
git:
origin_url: string
branch: string
# These are for any custom variables for use throughout the bundle.
variables:
<some-unique-variable-name>:
description: string
default: string or complex
# These are the default workspace settings if not otherwise overridden in
# the following "targets" top-level mapping.
workspace:
artifact_path: string
auth_type: string
azure_client_id: string # For Azure Databricks only.
azure_environment: string # For Azure Databricks only.
azure_login_app_id: string # For Azure Databricks only. Non-operational and reserved for future use.
azure_tenant_id: string # For Azure Databricks only.
azure_use_msi: true | false # For Azure Databricks only.
azure_workspace_resource_id: string # For Azure Databricks only.
client_id: string # For Databricks on AWS only.
file_path: string
google_service_account: string # For Databricks on Google Cloud only.
host: string
profile: string
root_path: string
state_path: string
# These are the permissions to apply to experiments, jobs, models, and pipelines defined
# in the "resources" mapping.
permissions:
- level: <permission-level>
group_name: <unique-group-name>
- level: <permission-level>
user_name: <unique-user-name>
- level: <permission-level>
service_principal_name: <unique-principal-name>
# These are the default artifact settings if not otherwise overridden in
# the following "targets" top-level mapping.
artifacts:
<some-unique-artifact-identifier>:
build: string
files:
- source: string
path: string
type: string
# These are any additional configuration files to include.
include:
- "<some-file-or-path-glob-to-include>"
- "<another-file-or-path-glob-to-include>"
# This is the identity to use to run the bundle
run_as:
- user_name: <user-name>
- service_principal_name: <service-principal-name>
# These are the default job and pipeline settings if not otherwise overridden in
# the following "targets" top-level mapping.
resources:
clusters:
<some-unique-programmatic-identifier-for-this-cluster>:
# See the REST API create request payload reference for clusters.
dashboards:
<some-unique-programmatic-identifier-for-this-dashboard>:
# See the REST API create request payload reference for dashboards.
experiments:
<some-unique-programmatic-identifier-for-this-experiment>:
# See the REST API create request payload reference for experiments.
jobs:
<some-unique-programmatic-identifier-for-this-job>:
# See REST API create request payload reference for jobs.
models:
<some-unique-programmatic-identifier-for-this-model>:
# See the REST API create request payload reference for models.
pipelines:
<some-unique-programmatic-identifier-for-this-pipeline>:
# See the REST API create request payload reference for Delta Live Tables (pipelines).
schemas:
<some-unique-programmatic-identifier-for-this-schema>:
# See the Unity Catalog schema request payload reference.
# These are any additional files or paths to include or exclude.
sync:
include:
- "<some-file-or-path-glob-to-include>"
- "<another-file-or-path-glob-to-include>"
exclude:
- "<some-file-or-path-glob-to-exclude>"
- "<another-file-or-path-glob-to-exclude>"
paths:
- "<some-file-or-path-to-synchronize>"
# These are the targets to use for deployments and workflow runs. One and only one of these
# targets can be set to "default: true".
targets:
<some-unique-programmatic-identifier-for-this-target>:
artifacts:
# See the preceding "artifacts" syntax.
bundle:
# See the preceding "bundle" syntax.
cluster_id: string
default: true | false
mode: development
presets:
<preset>: <value>
resources:
# See the preceding "resources" syntax.
sync:
# See the preceding "sync" syntax.
variables:
<preceding-unique-variable-name>: <non-default-value>
workspace:
# See the preceding "workspace" syntax.
run_as:
# See the preceding "run_as" syntax.
Esempi:
Nota
Per esempi di configurazione che illustrano le funzionalità del bundle e i casi d'uso comuni del bundle, vedere Esempi di configurazione del bundle e il repository di esempi di bundle in GitHub.
La configurazione del bundle di esempio seguente specifica un file locale denominato hello.py
nella stessa directory del file di configurazione del bundle locale denominato databricks.yml
. Esegue questo notebook come processo usando il cluster remoto con l'ID cluster specificato. L'URL dell'area di lavoro remota e le credenziali di autenticazione dell'area di lavoro vengono lette dal profilo di configurazione locale del chiamante denominato DEFAULT
.
Databricks consiglia di usare il mapping host
invece del mapping default
laddove possibile, in quanto rende i file di configurazione del bundle più portabili. L'impostazione del mapping host
indica all'interfaccia della riga di comando di Databricks di trovare un profilo corrispondente nel file .databrickscfg
e quindi usare i campi del profilo per determinare il tipo di autenticazione di Databricks da usare. Se all'interno del file host
esistono più profili con un campo corrispondente .databrickscfg
, è necessario usare profile
per indicare all'interfaccia della riga di comando di Databricks quale profilo specifico usare. Per un esempio, consultare dichiarazione di destinazione prod
più avanti in questa sezione.
Questa tecnica consente di riutilizzare e di eseguire l'override delle definizioni e delle impostazioni del processo all'interno del blocco resources
:
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
Anche se il file di configurazione del bundle seguente è funzionalmente equivalente, non è modularizzato, cosa che non permette di riutilizzarlo. Inoltre, questa dichiarazione aggiunge un'attività al processo anziché l'override del processo esistente:
bundle:
name: hello-bundle
targets:
dev:
default: true
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
Nell'esempio seguente viene aggiunta una destinazione con il nome prod
che usa un URL dell'area di lavoro remota e credenziali di autenticazione dell'area di lavoro diverse, che vengono lette dalla voce corrispondente .databrickscfg
del file host
del chiamante con l'URL dell'area di lavoro specificato. Questo processo esegue lo stesso notebook, ma usa un cluster remoto diverso con l'ID cluster specificato. Si noti che non è necessario dichiarare il mapping notebook_task
all'interno del mapping prod
, perché esegue il fallback per usare il mapping notebook_task
all'interno del mapping di primo livello resources
, se il mapping notebook_task
non viene sottoposto esplicitamente a override all'interno del mapping prod
.
bundle:
name: hello-bundle
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456
Per convalidare, distribuire ed eseguire questo processo all'interno della destinazione dev
:
# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run hello_job
# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev hello_job
Per convalidare, distribuire ed eseguire questo processo all'interno della destinazione prod
invece:
# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod hello_job
Di seguito è riportato l'esempio precedente, ma suddiviso in file di componenti per una maggiore modularizzazione e un riutilizzo migliore tra più file di configurazione bundle. Questa tecnica consente di non solo riutilizzare varie definizioni e impostazioni, ma è anche possibile scambiare uno di questi file con altri file che forniscono dichiarazioni completamente diverse:
databricks.yml
:
bundle:
name: hello-bundle
include:
- "bundle*.yml"
bundle.resources.yml
:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
bundle.targets.yml
:
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 2345-678901-fabcd456
Mapping
Le sezioni seguenti descrivono la sintassi del file di configurazione del bundle in base al mapping di primo livello.
bundle
Un file di configurazione del bundle deve contenere un solo mapping di primo livello bundle
che associa il contenuto del bundle e le impostazioni dell'area di lavoro di Azure Databricks.
Questo mapping bundle
deve contenere un mapping name
che specifica un nome programmatico (o logico) per il bundle. Nell'esempio seguente viene dichiarato un bundle con il nome programmatico (o logico) hello-bundle
.
bundle:
name: hello-bundle
Un mapping bundle
può anche essere figlio di una o più destinazioni nel mapping di destinazioni generale. Ognuno di questi mapping figlio bundle
specifica tutte le sostituzioni non predefinite a livello di destinazione. Tuttavia, il valore bundle
del mapping di primo livello name
non può essere sottoposto a override a livello di destinazione.
cluster_id
Il mapping bundle
può avere un mapping figlio cluster_id
. Questo mapping consente di specificare l'ID di un cluster da usare come override per i cluster definiti altrove nel file di configurazione del bundle. Per informazioni su come recuperare l'ID di un cluster, vedere URL e ID del cluster.
L'override cluster_id
è destinato agli scenari di solo sviluppo ed è supportato solo per la destinazione con il relativo mapping mode
impostato su development
. Per altre informazioni sul mapping target
, vedere Destinazioni.
compute_id
Nota
Questa impostazione è deprecata. Usare cluster_id al suo posto.
Il mapping bundle
può avere un mapping figlio compute_id
. Questo mapping consente di specificare l'ID di un cluster da usare come override per i cluster definiti altrove nel file di configurazione del bundle.
Git
È possibile recuperare ed eseguire l'override dei dettagli del controllo della versione Git associati al bundle. Ciò è utile per annotare le risorse distribuite. Ad esempio, è possibile includere l'URL di origine del repository nella descrizione di un modello di Machine Learning distribuito.
Ogni volta che si esegue un comando bundle
come validate
, deploy
o run
, il comando bundle
popola l'albero di configurazione del comando con le impostazioni predefinite seguenti:
-
bundle.git.origin_url
, che rappresenta l'URL di origine del repository. Si tratta dello stesso valore che si otterrebbe se è stato eseguito il comandogit config --get remote.origin.url
dal repository clonato. È possibile usare le sostituzioni per fare riferimento a questo valore con i file di configurazione del bundle, come${bundle.git.origin_url}
. -
bundle.git.branch
, che rappresenta il ramo corrente all'interno del repository. Si tratta dello stesso valore che si otterrebbe se è stato eseguito il comandogit branch --show-current
dal repository clonato. È possibile usare le sostituzioni per fare riferimento a questo valore con i file di configurazione del bundle, come${bundle.git.branch}
. -
bundle.git.commit
, che rappresenta il commitHEAD
all'interno del repository. Si tratta dello stesso valore che si otterrebbe se è stato eseguito il comandogit rev-parse HEAD
dal repository clonato. È possibile usare le sostituzioni per fare riferimento a questo valore con i file di configurazione del bundle, come${bundle.git.commit}
.
Per recuperare o eseguire l'override delle impostazioni Git, il bundle deve trovarsi all'interno di una directory associata a un repository Git, ad esempio una directory locale inizializzata eseguendo il comando git clone
. Se la directory non è associata a un repository Git, queste impostazioni Git sono vuote.
Se necessario, è possibile eseguire l'override delle impostazioni origin_url
e branch
all’interno del mapping git
del mapping di primo livello bundle
, come indicato di seguito:
bundle:
git:
origin_url: <some-non-default-origin-url>
branch: <some-non-current-branch-name>
databricks_cli_version
Il mapping bundle
può contenere un mapping databricks_cli_version
che vincola la versione dell'interfaccia della riga di comando di Databricks richiesta dal bundle. Ciò può impedire problemi causati dall'uso di mapping non supportati in una determinata versione dell'interfaccia della riga di comando di Databricks.
La versione dell'interfaccia della riga di comando di Databricks è conforme al versionamento semantico e il mapping databricks_cli_version
supporta la specifica dei vincoli di versione. Se il valore corrente databricks --version
non rientra nei limiti specificati nel mapping databricks_cli_version
del bundle, si verifica un errore quando databricks bundle validate
viene eseguito nel bundle. Gli esempi seguenti illustrano una sintassi comune dei vincoli di versione:
bundle:
name: hello-bundle
databricks_cli_version: "0.218.0" # require Databricks CLI 0.218.0
bundle:
name: hello-bundle
databricks_cli_version: "0.218.*" # allow all patch versions of Databricks CLI 0.218
bundle:
name: my-bundle
databricks_cli_version: ">= 0.218.0" # allow any version of Databricks CLI 0.218.0 or higher
bundle:
name: my-bundle
databricks_cli_version: ">= 0.218.0, <= 1.0.0" # allow any Databricks CLI version between 0.218.0 and 1.0.0, inclusive
variabili
Il file di impostazioni bundle può contenere un mapping di primo livello variables
in cui sono definite variabili personalizzate. Per ogni variabile, impostare una descrizione facoltativa, un valore predefinito, se la variabile personalizzata è un tipo complesso o una ricerca per recuperare un valore ID, usando il formato seguente:
variables:
<variable-name>:
description: <variable-description>
default: <optional-default-value>
type: <optional-type-value> # "complex" is the only valid value
lookup:
<optional-object-type>: <optional-object-name>
Nota
Si presuppone che le variabili siano di tipo string
, a meno che non type
sia impostato su complex
. Vedere Definire una variabile complessa.
Per fare riferimento a una variabile personalizzata all'interno della configurazione del bundle, usare la sostituzione ${var.<variable_name>}
.
Per altre informazioni sulle variabili e le sostituzioni personalizzate, vedere Sostituzioni e variabili nei bundle di asset di Databricks.
area di lavoro
Il file di configurazione del bundle può contenere un solo mapping di primo livello workspace
per specificare le impostazioni dell'area di lavoro di Azure Databricks non predefinite da usare.
Importante
I percorsi validi dell'area di lavoro di Databricks iniziano con /Workspace
o /Volumes
. I percorsi dell'area di lavoro personalizzati sono preceduti automaticamente da /Workspace
, quindi se si usa una sostituzione del percorso dell'area di lavoro nel percorso personalizzato, ${workspace.file_path}
ad esempio , non è necessario anteporre /Workspace
al percorso.
root_path
Questo mapping workspace
può contenere un mapping root_path
per specificare un percorso radice non predefinito da usare all'interno dell'area di lavoro sia per le distribuzioni che per le esecuzioni del flusso di lavoro, ad esempio:
workspace:
root_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}
Per impostazione predefinita, per root_path
l'interfaccia della riga di comando di Databricks usa il percorso predefinito di /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/${bundle.target}
, che usa le sostituzioni.
artifact_path
Questo mapping workspace
può contenere anche un mapping artifact_path
per specificare un percorso di artefatto non predefinito da usare all'interno dell'area di lavoro per le distribuzioni e le esecuzioni del flusso di lavoro, ad esempio:
workspace:
artifact_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/artifacts
Per impostazione predefinita, per artifact_path
l'interfaccia della riga di comando di Databricks usa il percorso predefinito di ${workspace.root}/artifacts
, che usa le sostituzioni.
Nota
Il mapping artifact_path
non supporta i percorsi di Databricks File System (DBFS).
file_path
Questo mapping workspace
può contenere anche un mapping file_path
per specificare un percorso di file non predefinito da usare all'interno dell'area di lavoro per le distribuzioni e le esecuzioni del flusso di lavoro, ad esempio:
workspace:
file_path: /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.name}/my-envs/${bundle.target}/files
Per impostazione predefinita, per file_path
l'interfaccia della riga di comando di Databricks usa il percorso predefinito di ${workspace.root}/files
, che usa le sostituzioni.
state_path
Il mapping state_path
viene impostato per impostazione predefinita sul percorso predefinito di ${workspace.root}/state
e rappresenta il percorso all'interno dell'area di lavoro per archiviare le informazioni sullo stato di Terraform sulle distribuzioni.
Altri mapping dell'area di lavoro
Il mapping workspace
può contenere anche i mapping facoltativi seguenti per specificare il meccanismo di autenticazione di Azure Databricks da usare. Se non vengono specificati all'interno di questo mapping workspace
, devono essere specificati in un mapping workspace
come figlio di una o più destinazioni nel mapping delle destinazioni di primo livello.
Importante
È necessario impostare valori hardcoded per i seguenti mapping workspace
per l'autenticazione di Azure Databricks. Ad esempio, non è possibile specificare variabili personalizzate per questi valori di mapping usando la ${var.*}
sintassi.
Il mapping
profile
(o le opzioni--profile
o-p
quando si eseguono i comandi del bundle convalida, distribuisci, esegui ed elimina con l'interfaccia della riga di comando di Databricks) specifica il nome di un profilo di configurazione da usare con questa area di lavoro per l'autenticazione di Azure Databricks. Questo profilo di configurazione viene mappato a quello creato durante la configurazione dell'interfaccia della riga di comando di Databricks.Nota
Databricks consiglia di usare il mapping
host
(o le--profile
opzioni o-p
quando si eseguono i comandi del bundle convalida, distribuisci, esegui ed elimina con l'interfaccia della riga di comando di Databricks) anziché il mappingprofile
, in quanto rende i file di configurazione del bundle più portatili. L'impostazione del mappinghost
indica all'interfaccia della riga di comando di Databricks di trovare un profilo corrispondente nel file.databrickscfg
e quindi usare i campi del profilo per determinare il tipo di autenticazione di Databricks da usare. Se all'interno del filehost
esistono più profili con un campo corrispondente.databrickscfg
, è necessario usare il mappingprofile
(o le opzioni della riga di comando--profile
o-p
) per indicare all'interfaccia della riga di comando di Databricks il profilo da usare. Per un esempio, vedere la dichiarazione di destinazioneprod
negli esempi.Il mapping
host
specifica l'URL per l'area di lavoro di Azure Databricks. Vedere URL nuovi per area di lavoro.Per l'autenticazione da computer a computer (M2M) OAuth, viene usato il mapping
client_id
. In alternativa, è possibile impostare questo valore nella variabile di ambiente localeDATABRICKS_CLIENT_ID
. In alternativa, è possibile creare un profilo di configurazione con il valoreclient_id
e quindi specificare il nome del profilo con il mappingprofile
oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks. Consultare Autenticare l'accesso ad Azure Databricks con un'entità servizio usando OAuth (OAuth M2M).Nota
Non è possibile specificare un valore del segreto OAuth di Azure Databricks nel file di configurazione del bundle. Invece, impostare la variabile di ambiente
DATABRICKS_CLIENT_SECRET
. In alternativa, è possibile aggiungere il valoreclient_secret
a un profilo di configurazione e quindi specificare il nome del profilo con il mappingprofile
oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks.Per l'autenticazione con l’interfaccia della riga di comando di Azure, viene usato il mapping
azure_workspace_resource_id
. In alternativa, è possibile impostare questo valore nella variabile di ambiente localeDATABRICKS_AZURE_RESOURCE_ID
. In alternativa, è possibile creare un profilo di configurazione con il valoreazure_workspace_resource_id
e quindi specificare il nome del profilo con il mappingprofile
oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks. Vedere Autenticazione con interfaccia della riga di comando di Azure.Per l'autenticazione dei segreti client di Azure con le entità servizio, vengono usati i mapping
azure_workspace_resource_id
,azure_tenant_id
eazure_client_id
. In alternativa, è possibile impostare questi valori rispettivamente nelle variabili di ambiente localiDATABRICKS_AZURE_RESOURCE_ID
,ARM_TENANT_ID
eARM_CLIENT_ID
. In alternativa, è possibile creare un profilo di configurazione con i valoriazure_workspace_resource_id
,azure_tenant_id
eazure_client_id
e quindi specificare il nome del profilo con il mappingprofile
(oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks). Vedere Autenticazione dell’entità servizio di Microsoft Entra.Nota
Non è possibile specificare un valore del segreto client di Azure nel file di configurazione del bundle. Invece, impostare la variabile di ambiente
ARM_CLIENT_SECRET
. In alternativa, è possibile aggiungere il valoreazure_client_secret
a un profilo di configurazione e quindi specificare il nome del profilo con il mappingprofile
oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks.Per l'autenticazione delle identità gestite di Azure, vengono usati i mapping
azure_use_msi
,azure_client_id
eazure_workspace_resource_id
. In alternativa, è possibile impostare questi valori rispettivamente nelle variabili di ambiente localiARM_USE_MSI
,ARM_CLIENT_ID
eDATABRICKS_AZURE_RESOURCE_ID
. In alternativa, è possibile creare un profilo di configurazione con i valoriazure_use_msi
,azure_client_id
eazure_workspace_resource_id
e quindi specificare il nome del profilo con il mappingprofile
(oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks). Vedere Panoramica dell'autenticazione delle identità gestite di Azure.Il mapping
azure_environment
specifica il tipo di ambiente di Azure (ad esempio Public, UsGov, Cina e Germania) per un set specifico di endpoint API. Il valore predefinito èPUBLIC
. In alternativa, è possibile impostare questo valore nella variabile di ambiente localeARM_ENVIRONMENT
. In alternativa, è possibile aggiungere il valoreazure_environment
a un profilo di configurazione e quindi specificare il nome del profilo con il mappingprofile
oppure usando le opzioni--profile
o-p
quando si eseguono i comandi di convalida, distribuzione, esecuzione ed eliminazione del bundle con l'interfaccia della riga di comando di Databricks.Il mapping
azure_login_app_id
non è operativo ed è riservato per l'uso interno.Il mapping
auth_type
specifica il tipo di autenticazione di Azure Databricks da usare, in particolare nei casi in cui l'interfaccia della riga di comando di Databricks deduce un tipo di autenticazione imprevisto. Consultare Autenticare l'accesso alle risorse di Azure Databricks.
autorizzazioni
Il mapping di primo livello permissions
specifica uno o più livelli di autorizzazione da applicare a tutte le risorse definite nel bundle. Per applicare autorizzazioni a una risorsa specifica, vedere Definire le autorizzazioni per una risorsa specifica.
I livelli di autorizzazione di primo livello consentiti sono CAN_VIEW
, CAN_MANAGE
e CAN_RUN
.
L'esempio seguente in un file di configurazione bundle definisce i livelli di autorizzazione per un utente, un gruppo e un'entità servizio, che vengono applicati a tutti i processi, pipeline, esperimenti e modelli definiti nel bundle resources
:
permissions:
- level: CAN_VIEW
group_name: test-group
- level: CAN_MANAGE
user_name: someone@example.com
- level: CAN_RUN
service_principal_name: 123456-abcdef
artifacts
Il mapping di primo livello artifacts
specifica uno o più artefatti compilati automaticamente durante le distribuzioni di bundle e possono essere usati in un secondo momento nelle esecuzioni del bundle. Ogni artefatto figlio supporta i mapping seguenti:
-
type
è obbligatorio. Per compilare un file wheel Python prima della distribuzione, questo mapping deve essere impostato suwhl
. -
path
è un percorso relativo facoltativo dal percorso del file di configurazione del bundle al percorso del file wheel Pythonsetup.py
. Sepath
non è incluso, l'interfaccia della riga di comando di Databricks tenterà di trovare il filesetup.py
del file wheel python nella radice del bundle. -
files
è un mapping facoltativo che include un mapping figliosource
, che è possibile usare per specificare percorsi non predefiniti da includere per istruzioni di compilazione complesse. I percorsi vengono specificati come percorsi relativi dal percorso del file di configurazione del bundle. -
build
è un set facoltativo di comandi di compilazione non predefiniti da eseguire in locale prima della distribuzione. Per le compilazioni con il wheel Python, l'interfaccia della riga di comando di Databricks presuppone che sia possibile trovare un'installazione locale del pacchetto Pythonwheel
per eseguire le compilazioni ed esegue il comandopython setup.py bdist_wheel
per impostazione predefinita durante ogni distribuzione del bundle. Per specificare più comandi di compilazione, separare ogni comando con caratteri doppia e commerciale (&&
).
La configurazione di esempio seguente crea una ruota usando Poetry:
artifacts:
default:
type: whl
build: poetry build
path: .
Per un pacchetto di esempio completo che usa artifacts
, vedere Sviluppare un file wheel Python usando i pacchetti di asset Databricks.
Suggerimento
È possibile definire, combinare ed eseguire l'override delle impostazioni per gli artefatti nei bundle, come descritto in Definire le impostazioni degli artefatti nei Bundle di Asset di Databricks.
includere
La matrice include
specifica un elenco di GLOB di percorso che contengono file di configurazione da includere all'interno del bundle. Questi glob di percorso sono relativi al percorso del file di configurazione del bundle in cui vengono specificati i glob del percorso.
L'interfaccia della riga di comando di Databricks non include alcun file di configurazione per impostazione predefinita all'interno del bundle. È necessario usare la matrice include
per specificare tutti i file di configurazione da includere all'interno del bundle, ad eccezione del file databricks.yml
stesso.
Questa matrice include
può essere visualizzata solo come mapping di primo livello.
La configurazione di esempio seguente include tre file di configurazione. Questi file si trovano nella stessa cartella del file di configurazione del bundle:
include:
- "bundle.artifacts.yml"
- "bundle.resources.yml"
- "bundle.targets.yml"
La configurazione di esempio seguente include tutti i file con nomi file che iniziano con bundle
e terminano con .yml
. Questi file si trovano nella stessa cartella del file di configurazione del bundle:
include:
- "bundle*.yml"
risorse
Il mapping resources
specifica informazioni sulle risorse di Azure Databricks usate dal bundle.
Questo mapping resources
può essere visualizzato come mapping di primo livello oppure può essere figlio di una o più destinazioni nel mapping di livello superiore e include zero o uno dei tipi di risorse supportati . Ogni mapping dei tipi di risorsa include una o più dichiarazioni di risorse singole, che devono avere un nome univoco. Queste singole dichiarazioni di risorse usano il payload di richiesta dell'operazione di creazione dell'oggetto corrispondente, espresso in YAML, per definire la risorsa. Le proprietà supportate per una risorsa sono i campi supportati dell'oggetto corrispondente.
I payload della richiesta di operazione di creazione sono documentati in Informazioni di riferimento sull'API REST di Databricks e il comando databricks bundle schema
restituisce tutti gli schemi di oggetti supportati. Inoltre, il comando databricks bundle validate
restituisce avvisi se le proprietà sconosciute delle risorse vengono trovate nei file di configurazione del bundle.
La seguente configurazione di esempio definisce una risorsa attività:
resources:
jobs:
hello-job:
name: hello-job
tasks:
- task_key: hello-task
existing_cluster_id: 1234-567890-abcde123
notebook_task:
notebook_path: ./hello.py
Per altre informazioni sulle risorse supportate nei bundle, oltre a configurazioni ed esempi comuni, vedere risorse di Aggregazioni di asset di Databricks e esempi di configurazione del bundle .
sync
Il mapping sync
consente di configurare i file che fanno parte delle distribuzioni di bundle.
exclude e include
I mapping include
e exclude
all'interno del mapping sync
specificano un elenco di file o cartelle da includere all'interno o escludere da distribuzioni di bundle, a seconda delle regole seguenti:
- In base a qualsiasi elenco di file e glob di percorso in un file
.gitignore
nella radice del bundle, il mappinginclude
può contenere un elenco di GLOB di file, GLOB di percorso o entrambi, relativamente alla radice del bundle, per includere in modo esplicito. - In base a qualsiasi elenco di file e glob di percorso in un
.gitignore
file nella radice del bundle, oltre all'elenco di file e percorsi glob nelinclude
mapping, ilexclude
mapping può contenere un elenco di glob di file, glob di percorso o entrambi, rispetto alla radice del bundle, per escludere in modo esplicito.
Tutti i percorsi dei file e delle cartelle specificati sono relativi al percorso del file di configurazione del bundle in cui sono specificati.
La sintassi per i modelli di file include
e exclude
di percorso segue la sintassi standard del modello .gitignore
. Vedere Formato di modello gitignore.
Ad esempio, se il seguente file .gitignore
contiene le voci seguenti:
.databricks
my_package/dist
Il file di configurazione del bundle contiene il mapping seguente include
:
sync:
include:
- my_package/dist/*.whl
Vengono quindi inclusi tutti i file nella cartella my_package/dist
con estensione di file di *.whl
. Tutti gli altri file nella cartella my_package/dist
non sono inclusi.
Tuttavia, se il file di configurazione del bundle contiene anche il seguente mapping exclude
:
sync:
include:
- my_package/dist/*.whl
exclude:
- my_package/dist/delete-me.whl
Vengono quindi inclusi tutti i file nella cartella my_package/dist
con estensione di file di *.whl
, ad eccezione del file denominato delete-me.whl
. Anche tutti gli altri file nella cartella my_package/dist
non sono inclusi.
Il mapping sync
può anche essere dichiarato nel mapping targets
per una destinazione specifica. Qualsiasi mapping sync
dichiarato in una destinazione viene unito a qualsiasi dichiarazione di mapping di primo livello sync
. Ad esempio, continuando con l'esempio precedente, il seguente mapping include
al livello targets
viene unito al mapping include
nel mapping di primo livello sync
:
targets:
dev:
sync:
include:
- my_package/dist/delete-me.whl
Percorsi
Il mapping sync
può contenere un mapping paths
che specifica i percorsi locali da sincronizzare con l'area di lavoro. Il mapping paths
consente di condividere file comuni tra bundle e può essere usato per sincronizzare i file che si trovano all'esterno della radice del bundle. (La radice del bundle è il percorso del file databricks.yml.) Ciò è particolarmente utile quando si dispone di un singolo repository che ospita più bundle e si vuole condividere librerie, file di codice o configurazione.
I percorsi specificati devono essere relativi a file e directory ancorati nella cartella in cui è impostato il mapping paths
. Se uno o più valori di percorso attraversano la directory a un predecessore della radice del bundle, il percorso radice viene determinato in modo dinamico per garantire che la struttura di cartelle rimanga intatta. Ad esempio, se la cartella radice del bundle è denominata my_bundle
, questa configurazione in databricks.yml
sincronizza la cartella common
che si trova a un livello sopra la radice del bundle e la radice del bundle stessa:
sync:
paths:
- ../common
- .
Una distribuzione di questo bundle comporta la struttura di cartelle seguente nell'area di lavoro:
common/
common_file.txt
my_bundle/
databricks.yml
src/
...
destinazioni
Il mapping targets
specifica uno o più contesti in cui eseguire i flussi di lavoro di Azure Databricks. Ogni destinazione è una raccolta univoca di artefatti, impostazioni dell'area di lavoro di Azure Databricks e dettagli del processo o della pipeline di Azure Databricks.
Il mapping targets
è costituito da uno o più mapping di destinazione, che devono avere un nome univoco a livello di codice (o logico).
Questo mapping targets
è facoltativo ma consigliato. Se viene specificato, può essere visualizzato solo come mapping di primo livello.
Le impostazioni nell'area di lavoro di primo livello, gli artefatti e i mapping delle risorse vengono usate se non sono specificate in un mapping targets
, ma tutte le impostazioni in conflitto vengono sostituite dalle impostazioni all'interno di una destinazione.
Una destinazione può anche eseguire l'override dei valori di qualsiasi variabile di primo livello.
impostazione predefinita
Per specificare un valore predefinito di destinazione per i comandi bundle, impostare il mapping default
su true
. Ad esempio, questa destinazione denominata dev
è la destinazione predefinita:
targets:
dev:
default: true
Se una destinazione predefinita non è configurata o se si desidera convalidare, distribuire ed eseguire processi o pipeline all'interno di una destinazione specifica, usare l'opzione -t
dei comandi bundle.
I comandi seguenti convalidano, distribuiscono ed eseguono my_job
all'interno delle dev
destinazioni e prod
:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev my_job
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod my_job
Nell'esempio seguente vengono dichiarate due destinazioni. La prima destinazione ha il nome dev
ed è la destinazione predefinita usata quando non viene specificata alcuna destinazione per i comandi bundle. La seconda destinazione ha il nome prod
e viene usata solo quando questa destinazione viene specificata per i comandi bundle.
targets:
dev:
default: true
prod:
workspace:
host: https://<production-workspace-url>
modalità e set di impostazioni
Per semplificare lo sviluppo e le procedure consigliate per CI/CD, i bundle di asset di Databricks offrono modalità di distribuzione per le destinazioni che impostano comportamenti predefiniti per i flussi di lavoro di pre-produzione e produzione. Alcuni comportamenti sono configurabili anche. Per informazioni dettagliate, vedere Modalità di distribuzione del bundle di asset di Databricks.
Suggerimento
Per impostare le identità di esecuzione per i bundle, è possibile specificare run_as
per ogni destinazione, come descritto in Specificare un'identità di esecuzione per un flusso di lavoro dei bundle di asset di Databricks.
Per specificare che una destinazione viene considerata come destinazione di sviluppo, aggiungere il mapping mode
impostato su development
. Per specificare che una destinazione viene considerata come destinazione di produzione, aggiungere il mapping mode
impostato su production
. Ad esempio, questa destinazione denominata prod
viene considerata come destinazione di produzione:
targets:
prod:
mode: production
È possibile personalizzare alcuni dei comportamenti usando il mapping presets
. Per un elenco dei set di impostazioni disponibili, vedere Impostazioni predefinite personalizzate. L'esempio seguente mostra una destinazione di produzione personalizzata che prefissa e contrassegna tutte le risorse di produzione:
targets:
prod:
mode: production
presets:
name_prefix: "production_" # prefix all resource names with production_
tags:
prod: true
Se mode
e presets
sono impostati, i set di impostazioni sostituiscono il comportamento della modalità predefinita. Le impostazioni delle singole risorse sostituiscono i set di impostazioni. Ad esempio, se una pianificazione è impostata su UNPAUSED
, ma il set di impostazioni trigger_pause_status
è impostato su PAUSED
, la pianificazione verrà annullata.