Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie maakt u een aangepaste Databricks Asset Bundle-sjabloon voor het maken van bundels die een taak uitvoeren op een cluster, met behulp van een specifieke Docker-containerimage en een specifiek Python-script.
Zie Aangepaste bundelsjablonenvoor meer informatie over aangepaste bundelsjablonen.
Behoeften
- Installeer de Databricks CLI versie 0.218.0 of hoger. Als u deze al hebt geïnstalleerd, controleert u of de versie 0.218.0 of hoger is door vanaf de opdrachtregel uit te voeren
databricks -version.
Gebruikerspromptvariabelen definiëren
De eerste stap bij het ontwikkelen van een bundelsjabloon is het definiëren van de databricks bundle init gebruikerspromptvariabelen. Vanaf de opdrachtregel:
Maak een lege map met de naam
dab-container-template:mkdir dab-container-templateMaak in de hoofdmap een bestand met de naam
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonVoeg de volgende inhoud toe aan het
databricks_template_schema.jsonen sla het bestand op. Elke variabele wordt vertaald naar een gebruikersprompt tijdens het maken van de bundel.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
De structuur van de bundelmap maken
Maak vervolgens in de sjabloonmap submappen met de naam resources en src. De map template bevat de mapstructuur voor de gegenereerde bundels. De namen van de submappen en bestanden volgen de syntaxis van de Go-pakketsjabloon wanneer ze zijn afgeleid van gebruikerswaarden.
mkdir -p "template/resources"
mkdir -p "template/src"
YAML-configuratiesjablonen toevoegen
Maak in de map template een bestand met de naam databricks.yml.tmpl en voeg de volgende YAML toe. In dit voorbeeld worden helpers voor bundelsjablonengebruikt.
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 -}}
Maak een ander YAML-bestand met de naam {{.project_name}}_job.yml.tmpl en plaats het in de map template/resources. Met dit nieuwe YAML-bestand worden de projecttaakdefinities gesplitst van de rest van de definitie van de bundel. Voeg de volgende YAML toe aan dit bestand om de template job te beschrijven, die een specifieke Python-taak bevat die moet worden uitgevoerd op een jobcluster met behulp van een specifieke Docker-containerimage.
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
In dit voorbeeld gebruikt u een basis Docker-containerimage van Databricks, maar u kunt ook uw eigen aangepaste image opgeven.
Bestanden toevoegen waarnaar wordt verwezen in uw configuratie
Maak vervolgens een template/src/{{.project_name}} map en maak het Python-taakbestand waarnaar wordt verwezen door de taak in de sjabloon:
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
Voeg nu het volgende toe aan task.py:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
De structuur van de bundelsjabloon controleren
Controleer de mapstructuur van uw bundelsjabloonproject. Dit moet er als volgt uitzien:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
Uw sjabloon testen
Test ten slotte uw bundelsjabloon. Als u een bundel wilt genereren op basis van uw nieuwe aangepaste sjabloon, gebruikt u de opdracht databricks bundle init en geeft u de nieuwe sjabloonlocatie op. Vanuit de hoofdmap van uw bundelprojecten:
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
Volgende stappen
- Maak een bundel waarmee een notebook wordt geïmplementeerd in een Azure Databricks-werkruimte en dat geïmplementeerde notebook vervolgens wordt uitgevoerd als een Azure Databricks-taak. Zie Een taak ontwikkelen met Databricks Asset Bundles.
- Maak een bundel waarmee een notebook naar een Azure Databricks-werkruimte wordt gedeployed en voer vervolgens dat gedeployde notebook uit als een ETL-pijplijn. Zie Declaratieve pijplijnen van Lakeflow Spark ontwikkelen met Databricks Asset Bundles.
- Maak een bundel waarmee een MLOps-stack wordt geïmplementeerd en uitgevoerd. Zie Databricks Assetbundels voor MLOps-stacks.
- Voeg een bundel toe aan een CI/CD-werkstroom (continue integratie/continue implementatie) in GitHub. Zie GitHub Actions.
Middelen
- opslagplaats met bundelvoorbeelden in GitHub