Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto kurzu vytvoříte vlastní šablonu pro vytváření deklarativních automatizačních balíčků, které spouští úlohu s úkolem v Pythonu v clusteru pomocí specifického obrazu Docker kontejneru.
Informace o vlastních šablonách balíčků naleznete v tématu vlastní šablony balíčků.
Požadavky
- 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 -versionz příkazového řádku.
Definujte proměnné výzvy uživatele
Nejprve definujte databricks bundle init proměnné výzvy uživatele. Z příkazového řádku:
Vytvořte prázdnou složku s názvem
dab-container-template:mkdir dab-container-templateV kořenovém adresáři složky vytvořte soubor s názvem
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonPřidejte do
databricks_template_schema.jsonsouboru následující KÓD JSON, který definuje výzvu uživatele k zadání názvu projektu sady:{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Vytvořte strukturu složek balíčku
Dále vytvořte template složku, která bude obsahovat strukturu složek pro vygenerované sady. Názvy podadresářů a souborů se řídí syntaxí šablony balíčku Go.
Tato šablona vytvoří složku balíčku projektu podle zadaného názvu projektu.
mkdir -p "template/{{.project_name}}"
Teď vytvořte podadresáře resources a src pro soubory sady:
mkdir -p "template/{{.project_name}}/resources"
mkdir -p "template/{{.project_name}}/src"
Přidání konfiguračních šablon YAML
template/{{.project_name}} Ve složce vytvořte soubor s názvem databricks.yml.tmpl:
touch template/{{.project_name}}/databricks.yml.tmpl
Přidejte následující kód YAML do databricks.yml.tmpl. Tento příklad používá pomocníky šablony svazku .
# 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 Lakeflow pipelines.
mode: development
default: true
workspace:
host: {{workspace_host}}
# The 'prod' target, used for production deployment.
prod:
# For production deployments, there is only a single copy, so 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. Avoid /Shared, which is writable
# by all workspace users.
#
# 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: /Workspace/Production/.bundle/${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ší soubor YAML pojmenovaný jako {{.project_name}}_job.yml.tmpl ve složce template/{{.project_name}}/resources. Tento nový soubor YAML obsahuje definici úlohy.
touch template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl
Do tohoto souboru přidejte následující YAML, který popisuje úlohu šablony, která obsahuje úlohu Pythonu, která se má spustit v clusteru úloh pomocí konkrétní image kontejneru Dockeru. V tomto příkladu se používá výchozí základní image kontejneru Dockeru Databricks, ale místo toho můžete zadat vlastní image.
# 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
Přidejte soubory odkazované v konfiguraci
Dále vytvořte soubor úloh Pythonu odkazovaný úlohou v šabloně:
touch template/{{.project_name}}/src/task.py
Nyní přidejte následující do task.py:
print(f'Spark version{spark.version}')
Ověření struktury šablony balíčku
Zkontrolujte strukturu složek projektu šablony balíčku. Měl by vypadat takto:
dab-container-template
├── databricks_template_schema.json
└── template
├── {{.project_name}}
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── task.py
Otestování šablony
Nakonec otestujte šablonu sady. Pokud chcete vygenerovat sadu založenou na nové vlastní šabloně, použijte příkaz databricks bundle init a zadejte nové umístění šablony. Z kořenové složky svazku projektů:
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 pomocí deklarativních automatizačních sad.
- Vytvořte sadu, která nasadí poznámkový blok do pracovního prostoru Azure Databricks a pak spustí tento nasazený poznámkový blok jako kanál ETL. Viz Vývoj kanálů s využitím deklarativních automatizačních sad.
- Vytvořte balíček, který nasadí a spustí MLOps Stack. Viz deklarativní balíčky automatizace 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 GitHub Actions.
Prostředky
- Úložiště příkladů Bundle na GitHubu