Modelli di progetto del bundle di asset di Databricks
Questo articolo descrive la sintassi per i modelli del bundle di asset di Databricks. I bundle consentono di gestire i flussi di lavoro di Azure Databricks a livello di codice. Vedere Che cosa sono i bundle di asset di Databricks?
I modelli di aggregazione consentono agli utenti di creare bundle in modo coerente e ripetibile, stabilendo strutture di cartelle, passaggi di compilazione e attività, test e altri attributi dell'infrastruttura distribuita come codice (IaC) DevOps comuni in una pipeline di distribuzione dell'ambiente di sviluppo.
Ad esempio, se si eseguono regolarmente processi di Databricks che richiedono pacchetti personalizzati con un passaggio di compilazione dispendioso in termini di tempo durante l'installazione, è possibile velocizzare il ciclo di sviluppo creando un modello di bundle che supporta ambienti contenitore personalizzati.
I modelli di bundle definiscono la struttura di directory del bundle che verrà creato e includono un modello di file di configurazione databricks.yml.tmpl
, nonché un file databricks_template_schema.json
contenente variabili di richiesta utente.
Usare un modello di bundle predefinito
Per usare un modello di bundle predefinito di Azure Databricks per creare il bundle, usare il comando bundle init
dell'interfaccia della riga di comando di Databricks, specificando il nome del modello predefinito da usare. Ad esempio, il comando seguente crea un bundle usando il modello di bundle Python predefinito:
databricks bundle init default-python
Se non si specifica un modello predefinito, il comando bundle init
presenta il set di modelli disponibili da cui è possibile scegliere.
Azure Databricks offre i modelli di bundle predefiniti seguenti:
Modello | Descrizione |
---|---|
default-python |
Modello per l'uso di Python con Databricks. Questo modello crea un bundle con un processo e una pipeline delle Delta Live Tables. Vedere default-python. |
default-sql |
Modello per l'uso di SQL con Databricks. Questo modello contiene un file di configurazione che definisce un processo che esegue query SQL in un'istanza di SQL Warehouse. Vedere default-sql. |
dbt-sql |
Modello che sfrutta dbt-core per lo sviluppo locale e i bundle per la distribuzione. Questo modello contiene la configurazione che definisce un processo con un'attività dbt, nonché un file di configurazione che definisce i profili dbt per i processi dbt distribuiti. Vedere dbt-sql. |
mlops-stacks |
Modello avanzato di stack completo per l'avvio di nuovi progetti stack MLOps. Vedere mlops-stacks e Aggregazioni di asset di Databricks per stack MLOps. |
Usare un modello di bundle personalizzato
Per usare un modello di bundle diverso dai modelli di bundle predefiniti di Azure Databricks, passare il percorso locale o l'URL remoto del modello al comando bundle init
dell'interfaccia della riga di comando di Databricks.
Ad esempio, il comando seguente usa il modello dab-container-template
creato nell'Esercitazione sul modello di bundle personalizzato:
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Creare un modello di bundle personalizzato
I modelli di bundle usano la sintassi di creazione di modelli del pacchetto Go. Vedere la documentazione sul modello di pacchetto Go.
Come minimo, un progetto di modello di bundle deve avere:
- Un file
databricks_template_schema.json
nella radice del progetto che definisce una variabile di richiesta utente per il nome del progetto bundle. - Un file
databricks.yml.tmpl
che si trova in una cartellatemplate
che definisce la configurazione per tutti i bundle creati con il modello. Se il filedatabricks.yml.tmpl
fa riferimento a modelli di configurazione aggiuntivi*.yml.tmpl
, specificare il percorso di questi nel mappinginclude
.
Facoltativamente, è possibile aggiungere sottocartelle e file alla cartella di cui si vuole eseguire il mirroring template
nei bundle creati dal modello.
Definire le variabili di richiesta utente
Il primo passaggio per la creazione di un modello di bundle di base consiste nel creare una cartella di progetto modello e un file denominato databricks_template_schema.json
nella radice del progetto. Questo file contiene le variabili per cui gli utenti forniscono valori di input quando usano il modello per creare un bundle usando bundle init
. Questo formato di file segue la specifica dello schema JSON.
mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json
Aggiungere il codice seguente al file databricks_template_schema.json
e quindi salvare il file:
{
"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."
}
In questo file:
project_name
è l'unico nome della variabile di input.default
è un valore predefinito facoltativo se un valore non viene fornito dall'utente con--config-file
come parte del comandobundle init
o disabilitato dall'utente al prompt dei comandi.description
è il prompt dell'utente associato alla variabile di input, se un valore non viene fornito dall'utente con--config-file
come parte del comandobundle init
.order
è un ordine facoltativo in cui ogni prompt dell'utente viene visualizzato se un valore non viene fornito dall'utente con--config-file
come parte del comandobundle init
. Seorder
non viene specificato, gli utenti visualizzano l'ordine in cui sono elencati nello schema.success_message
è un messaggio facoltativo visualizzato al termine della creazione del progetto.
Compilare la struttura di cartelle
Creare quindi la cartella richiesta template
e compilare la struttura di cartelle al suo interno. Questa struttura verrà con mirroring in base ai bundle creati con questo modello. Inserire anche tutti i file che si desidera includere in tali cartelle. Questo modello di bundle di base archivia i file in una cartella src
e include un semplice notebook.
mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb
Aggiungere il testo seguente al file simple_notebook.ipynb
:
print("Hello World!")
Popolare i file dei modelli di configurazione
Creare ora il file necessario databricks.yml.tmpl
nella cartella template
:
touch basic-bundle-template/template/databricks.yml.tmpl
Popolare questo file con il modello di configurazione di base YAML. Questo modello di configurazione stabilisce il nome del bundle, un processo usando il file del notebook specificato e due ambienti di destinazione per i bundle creati usando questo modello. Sfrutta anche le sostituzioni di bundle, che sono altamente consigliate. Vedere sostituzioni bundle.
# 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 -}}
Testare il modello di bundle
Infine, testare il modello. Creare una nuova cartella di progetto bundle, quindi usare l'interfaccia della riga di comando di Databricks per inizializzare un nuovo bundle usando il modello:
mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template
Per il prompt, What is your bundle project name?
, digitare my_test_bundle
.
Dopo aver creato il bundle di test, viene restituito il messaggio di esito positivo del file di schema. Se si esamina il contenuto della cartella my-test-bundle
, verrà visualizzato quanto segue:
my-test-bundle
├── databricks.yml
└── src
└── simple_notebook.ipynb
E il file databricks.yml è ora personalizzato:
# 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
Condividere il modello
Se si vuole condividere questo modello di bundle con altri utenti, è possibile archiviarlo nel controllo della versione con qualsiasi provider supportato da Git e a cui gli utenti hanno accesso. Per eseguire il comando bundle init
con un URL Git, assicurarsi che il file databricks_template_schema.json
si trovi nel percorso radice relativo a tale URL Git.
Suggerimento
È possibile inserire il file databricks_template_schema.json
in una cartella diversa rispetto alla radice del bundle. È quindi possibile usare l'opzione bundle init
del comando --template-dir
per fare riferimento a tale cartella, la quale contiene il file databricks_template_schema.json
.
Passaggi successivi
- Esplorare modelli aggiuntivi creati e gestiti da Databricks. Vedere gli esempi di bundle nel repository GitHub.
- Per usare stack MLOps con i modelli di aggregazione di asset di Databricks, vedere Aggregazioni di asset di Databricks per stack MLOps.
- Altre informazioni sulla creazione di modelli dei pacchetti Go. Vedere la documentazione sul modello di pacchetto Go.