Sdílet prostřednictvím


Š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 initDatabricks 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ý ve template 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í v include 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