Šablony projektů Sady prostředků Databricks

Tento článek popisuje syntaxi pro šablony sady prostředků Databricks. Sady prostředků umožňují programovou správu pracovních postupů Azure Databricks. Podívejte se , co jsou sady prostředků Databricks?

Š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) běžných v rámci kanálu nasazení vývojového prostředí.

Pokud například rutinně spouštíte úlohy Databricks, které vyžadují vlastní balíčky s časově náročným krokem kompilace při instalaci, můžete urychlit vývojovou smyčku vytvořením šablony sady, která podporuje vlastní prostředí kontejnerů.

Šablony sady definují adresářovou strukturu sady, která se vytvoří, a obsahují databricks.yml.tmpl šablonu konfiguračního souboru a databricks_template_schema.json soubor obsahující proměnné příkazového řádku uživatele.

Použití výchozí šablony sady

Pokud chcete k vytvoření sady prostředků použít výchozí šablonu sady Azure Databricks, použijte příkaz Rozhraní příkazového řádku bundle init Databricks a zadejte název výchozí š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 nezadáte výchozí šablonu, zobrazí příkaz sadu dostupných šablon, bundle init ze kterých si můžete vybrat.

Azure Databricks poskytuje následující výchozí šablony sad:

Template Popis
default-python Šablona pro použití Pythonu s Databricks Tato šablona vytvoří sadu s úlohou a kanálem Delta Live Tables. 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 sady prostředků pro 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á úplná šablona zásobníku pro spouštění nových projektů MLOps Stacks. Viz sady prostředků mlops a sady prostředků Databricks pro zásobníky MLOps.

Použití vlastní šablony sady

Pokud chcete použít jinou šablonu sady než výchozí šablony sady Azure Databricks, předejte místní cestu nebo vzdálenou adresu URL šablony do příkazu Rozhraní příkazového řádku bundle init Databricks.

Následující příkaz například používá šablonu vytvořenou dab-container-template v kurzu vlastní šablony sady prostředků:

databricks bundle init /projects/my-custom-bundle-templates/dab-container-template

Vytvoření vlastní šablony sady

Šablony balíčků používají syntaxi šablon balíčků Go. Projděte si dokumentaci k šabloně balíčku Go.

Minimálně projekt šablony sady musí mít:

  • databricks_template_schema.json Soubor v kořenovém adresáři projektu, který definuje jednu proměnnou výzvy uživatele pro název projektu sady.
  • 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í.

Do složky, kterou chcete zrcadlit, můžete volitelně přidat podsložky a soubory template vytvořené šablonou.

Definování proměnných výzvy uživatele

Prvním krokem při vytváření základní šablony sady je vytvoření složky projektu šablony a souboru pojmenovaného databricks_template_schema.json v kořenovém adresáři projektu. Tento soubor obsahuje proměnné, pro které uživatelé zadávají vstupní hodnoty při použití šablony k vytvoření sady pomocí bundle init. Formát tohoto souboru se řídí specifikací schématu JSON.

mkdir basic-bundle-template
touch basic-bundle-template/databricks_template_schema.json

Do souboru přidejte následující databricks_template_schema.json a pak soubor uložte:

{
   "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."
}

V tomto souboru:

  • project_name je jediný název vstupní proměnné.
  • default je volitelná výchozí hodnota, pokud uživatel --config-file v rámci bundle init příkazu nezadá hodnotu nebo ji přepíše uživatel na příkazovém řádku.
  • description je výzva uživatele přidružená ke vstupní proměnné, pokud uživatel --config-file jako součást bundle init příkazu nezadá hodnotu.
  • order je volitelné pořadí, ve kterém se zobrazí výzva každého uživatele, pokud uživatel --config-file jako součást bundle init příkazu nezadá hodnotu. Pokud order není zadaný, zobrazí se výzva uživatele v pořadí, ve kterém jsou uvedeny ve schématu.
  • success_message je volitelná zpráva, která se zobrazí po úspěšném vytvoření projektu.

Sestavení struktury složek

Dále vytvořte požadovanou template složku a sestavte v ní strukturu složek. Tato struktura bude zrcadlit sadami vytvořenými pomocí této šablony. Do těchto složek také umístěte všechny soubory, které chcete zahrnout. Tato základní šablona sady obsahuje soubory ve src složce a obsahuje jeden jednoduchý poznámkový blok.

mkdir -p basic-bundle-template/template/src
touch basic-bundle-template/template/src/simple_notebook.ipynb

Do souboru přidejte následující simple_notebook.ipynb :

print("Hello World!")

Naplnění souborů šablon konfigurace

Teď ve složce vytvořte požadovaný databricks.yml.tmpl soubor template :

touch basic-bundle-template/template/databricks.yml.tmpl

Tento soubor naplňte základní šablonou konfigurace YAML. Tato šablona konfigurace vytvoří název sady prostředků, jednu úlohu pomocí zadaného souboru poznámkového bloku a dvě cílová prostředí pro sady vytvořené pomocí této šablony. Využívá také náhrady svazků, které se důrazně doporučují. Podívejte se na náhrady balíčků.

# This is the configuration for the Databricks Asset Bundle {{.project_name}}.

bundle:
  name: {{.project_name}}

# 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

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 -}}

Otestování šablony sady

Nakonec šablonu otestujte. Vytvořte novou složku projektu sady prostředků a pak pomocí rozhraní příkazového řádku Databricks inicializujete novou sadu pomocí šablony:

mkdir my-test-bundle
cd my-test-bundle
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
   └── src
      └── simple_notebook.ipynb

Soubor databricks.yml je teď přizpůsobený:

# This is the configuration for the Databricks Asset Bundle my-test-bundle.

bundle:
  name: my-test-bundle

# 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

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

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. Pokud chcete příkaz spustit bundle init s adresou URL Gitu, ujistěte se, že databricks_template_schema.json je soubor v kořenovém umístění vzhledem k této adrese URL Gitu.

Tip

Soubor můžete umístit databricks_template_schema.json do jiné složky vzhledem ke kořenovému adresáři sady. 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