Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
I den här självstudien skapar du en anpassad Databricks Asset Bundle-mall för att skapa paket som kör ett jobb med en specifik Python-uppgift i ett kluster med en specifik Docker-containeravbildning.
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
Det första steget i att skapa en paketmall är att definiera databricks bundle init variabler för användarprompt. Från kommandoraden:
Skapa en tom katalog med namnet
dab-container-template:mkdir dab-container-templateI katalogens rot skapar du en fil med namnet
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonLägg till följande innehåll i
databricks_template_schema.jsonoch spara filen. Varje variabel översätts till en användarprompt när paketet skapas.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Skapa paketmappstrukturen
I mallkatalogen skapar du sedan underkataloger med namnet resources och src. Mappen template innehåller katalogstrukturen för dina genererade paket. Namnen på underkatalogerna och filerna följer Go-paketmallssyntaxen när de härleds från användarvärden.
mkdir -p "template/resources"
mkdir -p "template/src"
Lägga till YAML-konfigurationsmallar
I katalogen template skapar du en fil med namnet databricks.yml.tmpl och lägger till följande YAML. I det här exemplet används mallhjälpare för paket.
touch template/databricks.yml.tmpl
# This is a Databricks asset 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 och placera den i katalogen template/resources. Den här nya YAML-filen delar upp projektjobbsdefinitionerna från resten av paketets definition. Lägg till följande YAML i den här filen för att beskriva malljobbet, som innehåller en specifik Python-uppgift som ska köras på ett jobbkluster med en specifik Docker-containeravbildning:
touch template/resources/{{.project_name}}_job.yml.tmpl
# 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/{{.project_name}}/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
I det här exemplet använder du en standard dockercontaineravbildning för Databricks-bas, men du kan ange en egen anpassad avbildning i stället.
Lägg till filer som refereras i konfigurationen
Skapa sedan en template/src/{{.project_name}}-katalog och skapa python-aktivitetsfilen som refereras av jobbet i mallen:
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
Lägg nu till följande i task.py:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
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:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── 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:
mkdir my-new-container-bundle
cd my-new-container-bundle
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 Databricks-tillgångspaket.
- 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 Lakeflow Spark Deklarativa pipelines med Databricks-tillgångspaket.
- Skapa ett paket som distribuerar och kör en MLOps Stack. Se Databricks-tillgångspaket för MLOps Stacks.
- Lägg till ett paket i ett CI/CD-arbetsflöde (kontinuerlig integrering/kontinuerlig distribution) i GitHub. Se GitHub Actions.