Šablony projektů balíčku zdrojů Databricks
Sady prostředků Databricks popisují prostředky Databricks, jako jsou úlohy, kanály a poznámkové bloky jako zdrojové soubory, umožňují zahrnout metadata spolu s těmito zdrojovými soubory pro zřízení infrastruktury a dalších prostředků a poskytnout kompletní definici projektu, která je zabalená jako jeden nasaditelný projekt. Podívejte se na Co jsou Databricks Asset Bundles?.
Šablony sad umožňují uživatelům vytvářet sady konzistentním, opakovatelným způsobem, a to vytvořením struktur složek, kroků sestavení a úloh, testů a dalších atributů infrastruktury jako kódu DevOps (IaC), které jsou společné v rámci kanálu nasazení.
Pokud například při instalaci pravidelně spouštíte úlohy Databricks, které vyžadují vlastní balíčky s časově náročným krokem kompilace, můžete urychlit vývojovou smyčku vytvořením šablony sady, která určuje vlastní prostředí kontejneru.
Databricks poskytuje sadu výchozích balíčkových šablon, ale můžete také vytvořit vlastní balíčkové šablony. Uživatelé pak mohou inicializovat sady pomocí příkazu inicializace sady, určení výchozí šablony nebo vlastní šablony.
Vytvoření sady pomocí šablony
Pokud chcete k vytvoření sady prostředků použít šablonu sady Azure Databricks, použijte příkaz bundle init
Databricks a zadejte název šablony, která se má použít. Následující příkaz například vytvoří sadu s použitím výchozí šablony sady Pythonu:
databricks bundle init default-python
Pokud chcete použít vlastní balíček šablon, předejte místní cestu nebo vzdálenou adresu URL šablony do příkazu rozhraní příkazového řádku Databricksbundle init
.
Například následující příkaz používá šablonu dab-container-template
, která byla vytvořena v Tutoriálu pro vlastní šablonu sady:
databricks bundle init /projects/my-custom-bundle-templates/dab-container-template
Pokud nezadáte šablonu, příkaz bundle init
vás vyzve k výběru ze sady dostupných výchozích šablon.
výchozí šablony balíčků
Azure Databricks poskytuje následující výchozí šablony sad:
Šablona | Popis |
---|---|
default-python |
Šablona pro použití Pythonu s Databricks Tato šablona vytvoří balíček s úlohou a DLT kanálem. Viz default-python. |
default-sql |
Šablona pro použití SQL s Databricks Tato šablona obsahuje konfigurační soubor, který definuje úlohu, která spouští dotazy SQL ve službě SQL Warehouse. Viz default-sql. |
dbt-sql |
Šablona, která využívá dbt-core pro místní vývoj a balíčky k nasazení. Tato šablona obsahuje konfiguraci, která definuje úlohu s úlohou dbt, a konfigurační soubor, který definuje profily dbt pro nasazené úlohy dbt. Viz dbt-sql. |
mlops-stacks |
Pokročilá šablona pro full stack pro zahájení nových projektů MLOps Stacks. Viz MLOps-Stacks a Databricks Asset Bundles pro MLOps Stacks. |
Vlastní šablony balíčků
Šablony balíčků používají syntaxi šablon balíčků Go, která poskytuje flexibilitu pro vlastní šablony balíčků, které můžete vytvořit. Podívejte se do dokumentace k šabloně balíčku Go.
Struktura projektu šablony
Minimálně projekt šablony sady musí mít:
- Soubor
databricks_template_schema.json
v kořenovém adresáři projektu, který definuje jednu vlastnost výzvy uživatele pro název projektu sady. Vizte schéma šablony . -
databricks.yml.tmpl
Soubor umístěný vetemplate
složce, která definuje konfiguraci pro všechny sady vytvořené pomocí šablony. Pokud vášdatabricks.yml.tmpl
soubor odkazuje na jakékoli další*.yml.tmpl
šablony konfigurace, zadejte jejich umístění vinclude
mapování. Viz šablon konfigurace.
Struktura složek a zahrnuté soubory ve složce projektu šablony balíčku template
se shodují se strukturou a soubory balíčků vytvořených pomocí této šablony. Pokud například chcete, aby šablona vygenerovala sadu s jednoduchým poznámkovým blokem ve složce src
a definicí úlohy, která spustí poznámkový blok ve složce resources
, uspořádáte projekt šablony takto:
basic-bundle-template
├── databricks_template_schema.json
└── template
└── {{.project_name}}
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── simple_notebook.ipynb
Tip
Název složky projektu a název definičního souboru úlohy v této šabloně sady používá proměnnou šablony. Informace o pomocnících a proměnných šablon najdete v tématu Pomocníci a proměnné šablony.
schéma šablony
Projekt šablony vlastní sady musí obsahovat soubor JSON databricks_template_schema.json
v kořenovém adresáři projektu. Tento soubor definuje pole používaná rozhraním příkazového řádku Databricks při spuštění příkazu bundle init
, například text výzvy.
Následující základní databricks_template_schema.json
soubor definuje vstupní proměnnou project_name
projektu sady, která obsahuje zprávu výzvy a výchozí hodnotu. Potom definuje zprávu o úspěchu pro inicializaci projektu bunde, která používá vstupní hodnotu proměnné ve zprávě.
{
"properties": {
"project_name": {
"type": "string",
"default": "basic_bundle",
"description": "What is the name of the bundle you want to create?",
"order": 1
}
},
"success_message": "\nYour bundle '{{.project_name}}' has been created."
}
Pole schématu šablony
Soubor databricks_template_schema.json
podporuje definování vstupních proměnných pro shromažďování informací během inicializace sady od uživatele v poli properties
a také další pole pro přizpůsobení inicializace.
Vstupní proměnné jsou definovány v poli properties
schématu šablony. Každá vstupní proměnná definuje metadata potřebná k zobrazení výzvy uživateli během initalizace svazku. Hodnota proměnné je pak přístupná pomocí syntaxe šablonových proměnných, například {{.project_name}}
.
Můžete také nastavit hodnoty některých polí pro přizpůsobení procesu inicializace sady.
Podporovaná pole schématu jsou uvedena v následující tabulce.
Pole schématu | Popis |
---|---|
properties |
Definice vstupních proměnných šablony balíčku Databricks doporučuje definovat alespoň jednu vstupní proměnnou, která je názvem projektu sady. |
properties.<variable_name> |
Název vstupní proměnné. |
properties.<variable_name>.default |
Výchozí hodnota, která se má použít, pokud uživatel nezadá hodnotu s --config-file jako součást příkazu bundle init nebo na příkazovém řádku, když se k ní zobrazí výzva. |
properties.<variable_name>.description |
Zpráva výzvy uživatele přidružená ke vstupní proměnné. |
properties.<variable_name>.enum |
Seznam možných hodnot vlastnosti, například "enum": ["azure", "aws", "gcp"] . Pokud je toto pole definováno, rozhraní příkazového řádku Databricks zobrazí hodnoty v seznamu na příkazovém řádku a vyzve uživatele k výběru hodnoty. |
properties.<variable_name>.order |
Celé číslo, které definuje relativní pořadí vstupních vlastností. Tím se řídí pořadí, ve kterém se na příkazovém řádku zobrazují výzvy k těmto vstupním proměnným. |
properties.<variable_name>.pattern |
Vzor regexp, který se má použít k ověření vstupu uživatele, například "pattern": "^[^ .\\\\/]{3,}$" . Podporovanou syntaxi regexp najdete v tématu https://github.com/google/re2/wiki/Syntax. |
properties.<variable_name>.pattern_match_failure_message |
Zpráva zobrazená uživateli, pokud hodnota zadaná uživatelem neodpovídá zadanému vzoru, například Project name must be at least 3 characters long and cannot contain the following characters: \"\\\", \"/\", \" \" and \".\"." . |
properties.<variable_name>.skip_prompt_if |
Pokud je toto schéma již uspokojeno stávající konfigurací, přeskočte dotaz na vstupní proměnnou. V takovém případě se místo toho použije výchozí hodnota vlastnosti. Příklad najdete v šabloně mlops-stacks. Pouze const porovnání jsou podporována. |
properties.<variable_name>.skip_prompt_if.properties.<previous_variable_name>.const |
Pokud hodnota pro <previous_variable_name> odpovídá konstantě nakonfigurované v skip_prompt_if , výzva k <variable_name> se přeskočí. |
welcome_message |
První zpráva k výstupu před zobrazením výzvy uživatele k zadání vstupu. |
success_message |
Zpráva, která se má vytisknout po úspěšném inicializaci šablony |
min_databricks_cli_version |
Minimální verze semver tohoto rozhraní příkazového řádku Databricks, kterou šablona vyžaduje.
databricks bundle init selže, pokud je verze rozhraní příkazového řádku menší než tato verze. |
version |
Vyhrazeno pro budoucí použití. Verze schématu. Používá se k určení, jestli je schéma kompatibilní s aktuální verzí rozhraní příkazového řádku. |
Šablony konfigurace
Vlastní šablona sady by měla obsahovat soubor databricks.yml.tmpl
ve složce template
v projektu šablony sady, který se používá k vytvoření konfiguračního souboru projektu sady databricks.yml
. Šablony konfiguračních souborů pro prostředky lze vytvořit ve složce resources
. Naplňte tyto soubory šablony konfigurační šablonou YAML.
Následující jednoduché ukázkové šablony konfigurace pro databricks.yml a přidružené *_job.yml vytvářejí název sady a dvě cílová prostředí. Definují úlohu, která spouští notebook v dané sadě, pro sady vytvořené pomocí této šablony. Tyto šablony konfigurace využívají nahrazení balíčků a pomocníky šablon balíčků .
template/{{.project_name}}/databricks.yml.tmpl
:
# databricks.yml
# This is the configuration for the Databricks Asset Bundle {{.project_name}}.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
targets:
# The deployment targets. See https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html
dev:
mode: development
default: true
workspace:
host: {{workspace_host}}
prod:
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
user_name: {{user_name}}
{{end -}}
template/{{.project_name}}/resources/{{.project_name}}_job.yml.tmpl
:
# {{.project_name}}_job.yml
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
Pomocníci šablon a proměnné
Pomocné funkce šablon jsou funkce poskytované Databricks, které můžete použít v souborech šablon k získání uživatelsky specifických informací za běhu nebo k interakci s enginem šablon. Můžete také definovat vlastní proměnné šablony.
Pro projekty šablonových sad Databricks jsou k dispozici následující pomocné nástroje. Informace o používání šablon a proměnných Jazyka Go najdete v tématu Šablony Jazyka Go.
Pomocník | Popis |
---|---|
{{url}} |
Alias pro https://pkg.go.dev/net/url#Parse. To umožňuje použití všech metod url.URL . |
{{regexp}} |
Alias pro https://pkg.go.dev/regexp#Compile. To umožňuje použití všech metod regexp.Regexp . |
{{random_int}} |
Vrátí jako int nezáporné pseudonáhodné číslo v polootevřeném intervalu (0,n). |
{{uuid}} |
Vrátí jako řetězec UUID, což je 128bitový (16bajtů) univerzální jedinečný IDentifier definovaný v DOKUMENTU RFC 4122.Toto ID je stabilní po dobu trvání provádění šablony a dá se použít k naplnění pole bundle.uuid v databricks.yml autory šablon. |
{{bundle_uuid}} |
Jedinečné ID balíčku. Více vyvolání této funkce vrátí stejné UUID. |
{{pair}} |
Pár klíč-hodnota. Používá se s pomocníkem map k vygenerování map pro použití v šabloně. |
{{map}} |
Převede seznam dvojic na objekt mapy. To je užitečné při předávání více objektů šablonám definovaným v adresáři knihovny. Vzhledem k tomu, že syntaxe textové šablony Go pro vyvolání šablony umožňuje zadat pouze jeden argument, lze tuto funkci použít k alternativnímu řešení tohoto omezení. Například v následujícím řádku lze na {{template "my_template" (map (pair "foo" $arg1) (pair "bar" $arg2))}} , $arg1 a $arg2 odkazovat zevnitř my_template jako na .foo a .bar . |
{{smallest_node_type}} |
Vrátí nejmenší typ uzlu. |
{{path_separator}} |
Znak oddělovače cest pro operační systém. To je / pro systémy Unix a \ pro Windows. |
{{workspace_host}} |
Adresa URL hostitele pracovního prostoru, na které je uživatel aktuálně ověřený. |
{{user_name}} |
Celé jméno uživatele, který šablonu inicializuje. |
{{short_name}} |
Krátký název uživatele, který šablonu inicializuje. |
{{default_catalog}} |
Vrátí výchozí katalog pracovních prostorů. Pokud neexistuje výchozí hodnota nebo pokud není povolený katalog Unity, vrátí se prázdný řetězec. |
{{is_service_principal}} |
Určuje, zda je aktuální uživatel servisním principálem. |
{{ skip <glob-pattern-relative-to-current-directory> }} |
Způsobí, že modul šablony přeskočí generování všech souborů a adresářů, které odpovídají vzoru vstupního globu. Příklad najdete v šabloně mlops-stacks. |
Pomocníci pro vlastní šablony
Pokud chcete definovat vlastní pomocné rutiny šablon, vytvořte soubor šablony ve složce library
projektu šablony a pomocí syntaxe šablon Go definujte pomocné rutiny. Například následující obsah souboru library/variables.tmpl
definuje proměnné cli_version
a model_name
. Pokud se tato šablona používá k inicializaci sady, hodnota proměnné model_name
se vytvoří pomocí pole input_project_name
definovaného v souboru schématu šablony. Hodnota této hodnoty pole je uživatelský vstup po zobrazení výzvy.
{{ define `cli_version` -}}
v0.240.0
{{- end }}
{{ define `model_name` -}}
{{ .input_project_name }}-model
{{- end }}
Úplný příklad najdete v souboru proměnných šablon mlops-stacks.
Otestování šablony sady
Nakonec nezapomeňte šablonu otestovat. Pomocí rozhraní příkazového řádku Databricks můžete například inicializovat novou sadu pomocí šablony definované v předchozích částech:
databricks bundle init basic-bundle-template
Do příkazového řádku What is your bundle project name?
zadejte my_test_bundle
.
Po vytvoření testovací sady bude výstupem zpráva o úspěchu ze souboru schématu. Pokud prozkoumáte obsah my_test_bundle
složky, měli byste vidět následující:
my_test_bundle
├── databricks.yml
├── resources
│ └── my_test_bundle_job.yml
└── src
└── simple_notebook.ipynb
A soubor a úloha databricks.yml
je teď přizpůsobená:
# databricks.yml
# This is the configuration for the Databricks Asset Bundle my-test-bundle.
bundle:
name: my_test_bundle
include:
- resources/*.yml
targets:
# The 'dev' target, used for development purposes. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#development-mode)
dev:
mode: development
default: true
workspace:
host: https://my-host.cloud.databricks.com
# The 'prod' target, used for production deployment. See [_](https://docs.databricks.com/en/dev-tools/bundles/deployment-modes.html#production-mode)
prod:
mode: production
workspace:
host: https://my-host.cloud.databricks.com
root_path: /Shared/.bundle/prod/${bundle.name}
run_as:
# This runs as someone@example.com in production. Alternatively,
# a service principal could be used here using service_principal_name
user_name: someone@example.com
# my_test_bundle_job.yml
# The main job for my_test_bundle
resources:
jobs:
my_test_bundle_job:
name: my_test_bundle_job
tasks:
- task_key: notebook_task
job_cluster_key: job_cluster
notebook_task:
notebook_path: ../src/simple_notebook.ipynb
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
Sdílení šablony
Pokud chcete tuto šablonu sady sdílet s ostatními, můžete ji uložit ve správě verzí u libovolného poskytovatele, kterého Git podporuje a ke kterému mají uživatelé přístup. Chcete-li spustit příkaz bundle init
s adresou URL Gitu, ujistěte se, že je soubor databricks_template_schema.json
v kořenovém adresáři této adresy URL Gitu.
Tip
Soubor databricks_template_schema.json
můžete umístit do jiné složky ve vztahu ke kořeni balíčku. Potom můžete pomocí bundle init
možnosti příkazu --template-dir
odkazovat na tuto složku, která obsahuje databricks_template_schema.json
soubor.
Další kroky
- Projděte si další šablony vytvořené a spravované službou Databricks. Podívejte se na úložiště ukázek balíčků na GitHubu.
- Pokud chcete používat MLOps zásobníky se šablonami Databricks Asset Bundle, přečtěte si Databricks Asset Bundles pro MLOps zásobníky.
- Přečtěte si další informace o šablonování balíčků Go. Podívejte se do dokumentace k šabloně balíčku Go.