Dela via


Mallar för Databricks-tillgångspaket

I den här artikeln beskrivs syntaxen för Databricks Asset Bundle-mallar , som fungerar med Databricks CLI-versionerna 0.205 och senare. Paket möjliggör programmatisk hantering av Azure Databricks-arbetsflöden. Se Vad är Databricks-tillgångspaket?

Med paketmallar kan användare skapa paket på ett konsekvent och repeterbart sätt genom att upprätta mappstrukturer, skapa steg och uppgifter, tester och andra DevOps IaC-attribut (infrastruktur som kod) som är gemensamma i en distributionspipeline för utvecklingsmiljön.

Om du till exempel rutinmässigt kör Databricks-jobb som kräver anpassade paket med ett tidskrävande kompileringssteg vid installationen kan du påskynda utvecklingsloopen genom att skapa en paketmall som stöder anpassade containermiljöer.

Paketmallar definierar katalogstrukturen för det paket som ska skapas, och de innehåller en databricks.yml.tmpl konfigurationsfilmall samt en databricks_template_schema.json fil som innehåller användarpromptvariabler.

Skapa ett paket baserat på en mall

I det här avsnittet beskrivs hur du använder en paketmall, antingen en Azure Databricks-standardpaketmall eller en anpassad paketmall.

Använda en standardmall för paket

Om du vill använda en Azure Databricks-standardpaketmall för att skapa ditt paket använder du kommandot Databricks CLIbundle init och anger namnet på standardmallen som ska användas. Följande kommando skapar till exempel ett paket med python-standardpaketmallen:

databricks bundle init default-python

Om du inte anger någon standardmall bundle init visar kommandot den uppsättning tillgängliga mallar som du kan välja mellan.

Azure Databricks tillhandahåller följande standardpaketmallar:

Mall beskrivning
default-python En mall för att använda Python med Databricks. Den här mallen skapar ett paket med ett jobb och En Delta Live Tables-pipeline. Se standard-python.
default-sql En mall för att använda SQL med Databricks. Den här mallen innehåller en konfigurationsfil som definierar ett jobb som kör SQL-frågor på ett SQL-lager. Se default-sql.
dbt-sql En mall som använder dbt-core för lokal utveckling och paket för distribution. Den här mallen innehåller konfigurationen som definierar ett jobb med en dbt-uppgift, samt en konfigurationsfil som definierar dbt-profiler för distribuerade dbt-jobb. Se dbt-sql.
mlops-stacks En avancerad mall för fullständig stack för att starta nya MLOps Stacks-projekt. Se mlops-stacks och Databricks Asset Bundles for MLOps Stacks.

Använda en anpassad paketmall

Om du vill använda en annan paketmall än Standardpaketmallarna för Azure Databricks skickar du mallens lokala sökväg eller fjärr-URL till Databricks CLI-kommandotbundle init .

Följande kommando använder till exempel mallen dab-container-template som skapades i självstudiekursen för anpassad paketmall:

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

Skapa en paketmall

Paketmallar använder syntax för Go-paketmallar. Se dokumentationen för Go-paketmallen .

Ett paketmallsprojekt måste minst ha:

  • En databricks_template_schema.json fil vid projektroten som definierar en användarpromptvariabel för paketprojektets namn.
  • En databricks.yml.tmpl fil som finns i en template mapp som definierar konfigurationen för alla paket som skapats med mallen. Om filen databricks.yml.tmpl refererar till ytterligare *.yml.tmpl konfigurationsmallar anger du platsen för dessa i mappningen include .

Du kan också lägga till undermappar och filer i mappen template som du vill ska speglas i paket som skapats av mallen.

Definiera variabler för användarprompt

Det första steget i att skapa en grundläggande paketmall är att skapa en mallprojektmapp och en fil med namnet databricks_template_schema.json i projektroten. Den här filen innehåller de variabler som användarna anger indatavärden för när de använder mallen för att skapa ett paket med .bundle init Den här filens format följer JSON-schemaspecifikationen.

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

Lägg till följande i databricks_template_schema.json filen och spara sedan filen:

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

I den här filen:

  • project_name är det enda indatavariabelnamnet.
  • default är ett valfritt standardvärde om ett värde inte tillhandahålls av användaren med --config-file som en del av bundle init kommandot eller åsidosätts av användaren i kommandotolken.
  • description är användarprompten som är associerad med indatavariabeln, om ett värde inte tillhandahålls av användaren som --config-file en del av bundle init kommandot.
  • order är en valfri ordning där varje användarfråga visas om ett värde inte tillhandahålls av användaren med --config-file som en del av bundle init kommandot. Om order inte anges visas användarens uppmaning i den ordning som de visas i schemat.
  • success_message är ett valfritt meddelande som visas när projektet har skapats.

Skapa mappstrukturen

Skapa sedan den mapp som krävs template och skapa mappstrukturen i den. Den här strukturen speglas av paket som skapats med den här mallen. Placera även alla filer som du vill inkludera i dessa mappar. Den här grundläggande paketmallen lagrar filer i en src mapp och innehåller en enkel notebook-fil.

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

Lägg till följande i simple_notebook.ipynb filen:

print("Hello World!")

Fylla i konfigurationsmallfiler

Skapa nu den nödvändiga databricks.yml.tmpl filen i template mappen:

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

Fyll i den här filen med den grundläggande konfigurationsmallen YAML. Den här konfigurationsmallen upprättar paketnamnet, ett jobb med den angivna notebook-filen och två målmiljöer för paket som skapats med den här mallen. Det drar också nytta av paketersättningar, vilket rekommenderas starkt. Se paketersättningar.

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

Testa paketmallen

Testa slutligen mallen. Skapa en ny paketprojektmapp och använd sedan Databricks CLI för att initiera ett nytt paket med hjälp av mallen:

mkdir my-test-bundle
cd my-test-bundle
databricks bundle init ../basic-bundle-template

För prompten What is your bundle project name?skriver du my_test_bundle.

När testpaketet har skapats matas meddelandet om lyckat resultat från schemafilen ut. Om du undersöker innehållet i my-test-bundle mappen bör du se följande:

my-test-bundle
   ├── databricks.yml
   └── src
      └── simple_notebook.ipynb

Och databricks.yml-filen är nu anpassad:

# 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

Dela mallen

Om du vill dela den här paketmallen med andra kan du lagra den i versionskontroll med alla leverantörer som Git stöder och som användarna har åtkomst till. Om du vill köra bundle init kommandot med en Git-URL kontrollerar du att databricks_template_schema.json filen finns på rotplatsen i förhållande till git-URL:en.

Dricks

Du kan placera databricks_template_schema.json filen i en annan mapp i förhållande till paketets rot. Du kan sedan använda bundle init kommandots --template-dir alternativ för att referera till mappen, som innehåller databricks_template_schema.json filen.

Nästa steg