Databricks Asset Bundle-projektmallar
I den här artikeln beskrivs syntaxen för Databricks-mallar för tillgångspaket . Paket möjliggör programmatisk hantering av Azure Databricks-arbetsflöden. Se Vad är Databricks-tillgångspaket?
Med paketmallar kan användare skapa paket på ett konsekvent och repeterbart sätt genom att upprätta mappstrukturer, skapa steg och uppgifter, tester och andra DevOps IaC-attribut (infrastruktur som kod) som är gemensamma i en distributionspipeline för utvecklingsmiljön.
Om du till exempel rutinmässigt kör Databricks-jobb som kräver anpassade paket med ett tidskrävande kompileringssteg vid installationen kan du påskynda utvecklingsloopen genom att skapa en paketmall som stöder anpassade containermiljöer.
Paketmallar definierar katalogstrukturen för det paket som ska skapas, och de innehåller en databricks.yml.tmpl
konfigurationsfilmall samt en databricks_template_schema.json
fil som innehåller användarpromptvariabler.
Använda en standardmall för paket
Om du vill använda en Azure Databricks-standardpaketmall för att skapa ditt paket använder du kommandot Databricks CLIbundle init
och anger namnet på standardmallen som ska användas. Följande kommando skapar till exempel ett paket med python-standardpaketmallen:
databricks bundle init default-python
Om du inte anger någon standardmall bundle init
visar kommandot den uppsättning tillgängliga mallar som du kan välja mellan.
Azure Databricks tillhandahåller följande standardpaketmallar:
Mall | beskrivning |
---|---|
default-python |
En mall för att använda Python med Databricks. Den här mallen skapar ett paket med ett jobb och En Delta Live Tables-pipeline. Se standard-python. |
default-sql |
En mall för att använda SQL med Databricks. Den här mallen innehåller en konfigurationsfil som definierar ett jobb som kör SQL-frågor på ett SQL-lager. Se default-sql. |
dbt-sql |
En mall som använder dbt-core för lokal utveckling och paket för distribution. Den här mallen innehåller konfigurationen som definierar ett jobb med en dbt-uppgift, samt en konfigurationsfil som definierar dbt-profiler för distribuerade dbt-jobb. Se dbt-sql. |
mlops-stacks |
En avancerad mall för fullständig stack för att starta nya MLOps Stacks-projekt. Se mlops-stacks och Databricks Asset Bundles for MLOps Stacks. |
Använda en anpassad paketmall
Om du vill använda en annan paketmall än Standardpaketmallarna för Azure Databricks skickar du mallens lokala sökväg eller fjärr-URL till Databricks CLI-kommandotbundle init
.
Följande kommando använder till exempel mallen dab-container-template
som skapades i självstudiekursen för anpassad paketmall:
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Skapa en anpassad paketmall
Paketmallar använder syntax för Go-paketmallar. Se dokumentationen för Go-paketmallen .
Ett paketmallsprojekt måste minst ha:
- En
databricks_template_schema.json
fil vid projektroten som definierar en användarpromptvariabel för paketprojektets namn. - En
databricks.yml.tmpl
fil som finns i entemplate
mapp som definierar konfigurationen för alla paket som skapats med mallen. Om filendatabricks.yml.tmpl
refererar till ytterligare*.yml.tmpl
konfigurationsmallar anger du platsen för dessa i mappningeninclude
.
Du kan också lägga till undermappar och filer i mappen template
som du vill ska speglas i paket som skapats av mallen.
Definiera variabler för användarprompt
Det första steget i att skapa en grundläggande paketmall är att skapa en mallprojektmapp och en fil med namnet databricks_template_schema.json
i projektroten. Den här filen innehåller de variabler som användarna anger indatavärden för när de använder mallen för att skapa ett paket med .bundle init
Den här filens format följer JSON-schemaspecifikationen.
mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json
Lägg till följande i databricks_template_schema.json
filen och spara sedan filen:
{
"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."
}
I den här filen:
-
project_name
är det enda indatavariabelnamnet. -
default
är ett valfritt standardvärde om ett värde inte tillhandahålls av användaren med--config-file
som en del avbundle init
kommandot eller åsidosätts av användaren i kommandotolken. -
description
är användarprompten som är associerad med indatavariabeln, om ett värde inte tillhandahålls av användaren som--config-file
en del avbundle init
kommandot. -
order
är en valfri ordning där varje användarfråga visas om ett värde inte tillhandahålls av användaren med--config-file
som en del avbundle init
kommandot. Omorder
inte anges visas användarens uppmaning i den ordning som de visas i schemat. -
success_message
är ett valfritt meddelande som visas när projektet har skapats.
Skapa mappstrukturen
Skapa sedan den mapp som krävs template
och skapa mappstrukturen i den. Den här strukturen speglas av paket som skapats med den här mallen. Placera även alla filer som du vill inkludera i dessa mappar. Den här grundläggande paketmallen lagrar filer i en src
mapp och innehåller en enkel notebook-fil.
mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb
Lägg till följande i simple_notebook.ipynb
filen:
print("Hello World!")
Fylla i konfigurationsmallfiler
Skapa nu den nödvändiga databricks.yml.tmpl
filen i template
mappen:
touch basic-bundle-template/template/databricks.yml.tmpl
Fyll i den här filen med den grundläggande konfigurationsmallen YAML. Den här konfigurationsmallen upprättar paketnamnet, ett jobb med den angivna notebook-filen och två målmiljöer för paket som skapats med den här mallen. Det drar också nytta av paketersättningar, vilket rekommenderas starkt. Se paketersättningar.
# 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 -}}
Testa paketmallen
Testa slutligen mallen. Skapa en ny paketprojektmapp och använd sedan Databricks CLI för att initiera ett nytt paket med hjälp av mallen:
mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template
För prompten What is your bundle project name?
skriver du my_test_bundle
.
När testpaketet har skapats matas meddelandet om lyckat resultat från schemafilen ut. Om du undersöker innehållet i my-test-bundle
mappen bör du se följande:
my-test-bundle
├── databricks.yml
└── src
└── simple_notebook.ipynb
Och databricks.yml-filen är nu anpassad:
# 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
Dela mallen
Om du vill dela den här paketmallen med andra kan du lagra den i versionskontroll med alla leverantörer som Git stöder och som användarna har åtkomst till. Om du vill köra bundle init
kommandot med en Git-URL kontrollerar du att databricks_template_schema.json
filen finns på rotplatsen i förhållande till git-URL:en.
Dricks
Du kan placera databricks_template_schema.json
filen i en annan mapp i förhållande till paketets rot. Du kan sedan använda bundle init
kommandots --template-dir
alternativ för att referera till mappen, som innehåller databricks_template_schema.json
filen.
Nästa steg
- Bläddra bland ytterligare mallar som skapas och underhålls av Databricks. Se lagringsplatsen för paketexempel i GitHub.
- Information om hur du använder MLOps Stacks med Databricks Asset Bundle-mallar finns i Databricks Tillgångspaket för MLOps Stacks.
- Läs mer om mallar för Go-paket. Se dokumentationen för Go-paketmallen .