Kurz: Vytvoření první vlastní šablony sady prostředků Databricks
V tomto kurzu vytvoříte vlastní šablonu sady prostředků Databricks pro vytváření sad, které spouští úlohu s konkrétní úlohou Pythonu v clusteru pomocí konkrétní image kontejneru Dockeru.
Než začnete
Nainstalujte rozhraní příkazového řádku Databricks verze 0.218.0 nebo novější. Pokud jste ji už nainstalovali, ověřte, že je verze 0.218.0 nebo vyšší, a to spuštěním databricks -version
z příkazového řádku.
Definování proměnných výzvy uživatele
Prvním krokem při vytvoření šablony sady je definování databricks bundle init
proměnných výzvy uživatele. Z příkazového řádku:
Vytvořte prázdný adresář s názvem
dab-container-template
:mkdir dab-container-template
V kořenovém adresáři vytvořte soubor s názvem
databricks_template_schema.json
:cd dab-container-template touch databricks_template_schema.json
Do souboru přidejte následující obsah
databricks_template_schema.json
a uložte ho. Každá proměnná se během vytváření sady přeloží na výzvu uživatele.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Vytvoření struktury složek sady prostředků
Dále v adresáři šablony vytvořte podadresáře pojmenované resources
a src
. Složka template
obsahuje adresářovou strukturu pro vygenerované sady. Názvy podadresářů a souborů budou při odvození z uživatelských hodnot následovat za syntaxí šablony balíčku Go.
mkdir -p "template/resources"
mkdir -p "template/src"
Přidání konfiguračních šablon YAML
template
V adresáři vytvořte soubor s názvem databricks.yml.tmpl
a přidejte následující YAML:
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 Delta Live Tables pipelines.
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 -}}
Vytvořte další pojmenovaný {{.project_name}}_job.yml.tmpl
soubor YAML a umístěte ho template/resources
do adresáře. Tento nový soubor YAML rozdělí definice úlohy projektu ze zbytku definice sady. Do tohoto souboru přidejte následující YAML, který popisuje úlohu šablony, která obsahuje konkrétní úlohu Pythonu, která se má spustit v clusteru úloh pomocí konkrétní image kontejneru Dockeru:
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
V tomto příkladu použijete výchozí základní image kontejneru Dockeru Databricks, ale místo toho můžete zadat vlastní image.
Přidání souborů odkazovaných v konfiguraci
Dále vytvořte template/src/{{.project_name}}
adresář a vytvořte soubor úloh Pythonu odkazovaný úlohou v šabloně:
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
Nyní přidejte následující položky:task.py
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
Ověření struktury šablony sady
Zkontrolujte strukturu složek projektu šablony sady. Měl by vypadat takto:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
Otestování šablony
Nakonec otestujte šablonu sady. Pokud chcete vygenerovat sadu založenou na nové vlastní šabloně, použijte databricks bundle init
příkaz a zadejte nové umístění šablony. Z kořenové složky projektů sady:
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
Další kroky
- Vytvořte sadu, která nasadí poznámkový blok do pracovního prostoru Azure Databricks a pak spustí tento nasazený poznámkový blok jako úlohu Azure Databricks. Viz Vývoj úlohy v Azure Databricks pomocí sad prostředků Databricks.
- Vytvořte sadu, která nasadí poznámkový blok do pracovního prostoru Azure Databricks a potom spustí tento nasazený poznámkový blok jako kanál Delta Live Tables. Viz Vývoj kanálů Delta Live Tables s využitím sad prostředků Databricks.
- Vytvořte sadu, která nasadí a spustí sadu MLOps Stack. Viz Sady prostředků Databricks pro zásobníky MLOps.
- Přidejte sadu do pracovního postupu CI/CD (kontinuální integrace nebo průběžné nasazování) na GitHubu. Viz Spuštění pracovního postupu CI/CD se sadou prostředků Databricks a GitHub Actions.