Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här handledningen skapar du en anpassad mall för att skapa Declarative Automation Bundles som kör ett jobb med en Python-uppgift i ett kluster med en specifik Docker-container-avbildning.
Information om anpassade paketmallar finns i Anpassade paketmallar.
Krav
- Installera Databricks CLI version 0.218.0 eller senare. Om du redan har installerat den kontrollerar du att versionen är 0.218.0 eller senare genom att köra
databricks -versionfrån kommandoraden.
Definiera variabler för användarprompt
Definiera först variablerna för databricks bundle init användarprompten. Från kommandoraden:
Skapa en tom mapp med namnet
dab-container-template:mkdir dab-container-templateI mappens rot skapar du en fil med namnet
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonLägg till följande JSON i
databricks_template_schema.jsonfilen för att definiera en användarprompt för paketprojektets namn:{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Skapa paketmappstrukturen
Skapa sedan en template mapp som ska innehålla mappstrukturen för dina genererade paket. Namnen på underkatalogerna och filerna följer Go-paketmallssyntaxen.
Den här mallen skapar paketprojektmappen baserat på projektnamnsprompten:
mkdir -p "template/{{.project_name}}"
Skapa nu underkatalogerna resources och src för paketfiler:
mkdir -p "template/{{.project_name}}/resources"
mkdir -p "template/{{.project_name}}/src"
Lägga till YAML-konfigurationsmallar
template/{{.project_name}} I mappen skapar du en fil med namnet databricks.yml.tmpl:
touch template/{{.project_name}}/databricks.yml.tmpl
Lägg till följande YAML i databricks.yml.tmpl. I det här exemplet används mallhjälpare för paket.
# This is a bundle definition for {{.project_name}}.
# See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
targets:
# The 'dev' target, used for development purposes.
# Whenever a developer deploys using 'dev', they get their own copy.
dev:
# We use 'mode: development' to make sure everything deployed to this target gets a prefix
# like '[dev my_user_name]'. Setting this mode also disables any schedules and
# automatic triggers for jobs and enables the 'development' mode for :re[LDP].
mode: development
default: true
workspace:
host: {{workspace_host}}
# The 'prod' target, used for production deployment.
prod:
# For production deployments, we only have a single copy, so we override the
# workspace.root_path default of
# /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
# to a path that is not specific to the current user.
#
# By making use of 'mode: production' we enable strict checks
# to make sure we have correctly configured this target.
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
# (see Databricks documentation).
user_name: {{user_name}}
{{end -}}
Skapa en annan YAML-fil med namnet {{.project_name}}_job.yml.tmpl i template/{{.project_name}}/resources mappen. Den här nya YAML-filen innehåller jobbdefinitionen.
touch template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl
Lägg till följande YAML i den här filen för att beskriva malljobbet, som innehåller en Python-uppgift som ska köras i ett jobbkluster med en specifik Docker-containeravbildning. I det här exemplet används en standard avbildning av Docker-containern för Databricks-bas, men du kan ange en egen anpassad avbildning i stället.
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: python_task
job_cluster_key: job_cluster
spark_python_task:
python_file: ../src/task.py
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
docker_image:
url: databricksruntime/python:10.4-LTS
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
Lägg till filer som refereras i konfigurationen
Skapa sedan Python-aktivitetsfilen som refereras av jobbet i mallen:
touch template/{{.project_name}}/src/task.py
Lägg nu till följande i task.py:
print(f'Spark version{spark.version}')
Verifiera mallstrukturen för paket
Granska mappstrukturen för ditt paketmallsprojekt. Det bör se ut så här:
dab-container-template
├── databricks_template_schema.json
└── template
├── {{.project_name}}
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── task.py
Testa mallen
Till sist, testa din paketmall. Om du vill generera ett paket baserat på din nya anpassade mall använder du kommandot databricks bundle init och anger den nya mallplatsen. Från rotmappen för paketprojekt:
databricks bundle init dab-container-template
Nästa steg
- Skapa ett paket som distribuerar en notebook-fil till en Azure Databricks-arbetsyta och kör sedan den distribuerade notebook-filen som ett Azure Databricks-jobb. Se Utveckla ett jobb med deklarativa automatiseringspaket.
- Skapa ett paket som distribuerar en notebook-fil till en Azure Databricks-arbetsyta och kör sedan den distribuerade notebook-filen som en ETL-pipeline. Se Utveckla pipelines med deklarativa automatiseringspaket.
- Skapa ett paket som distribuerar och kör en MLOps Stack. Se deklarativa automationspaket för MLOps-stacks.
- Lägg till ett paket i ett CI/CD-arbetsflöde (kontinuerlig integrering/kontinuerlig distribution) i GitHub. Se GitHub Actions.