Udostępnij za pośrednictwem


Szablony pakietu zasobów usługi Databricks

W tym artykule opisano składnię szablonów pakietu zasobów usługi Databricks, które współpracują z interfejsem wiersza polecenia usługi Databricks w wersji 0.218.0 lub nowszej. Pakiety umożliwiają programowe zarządzanie przepływami pracy usługi Azure Databricks. Zobacz Co to są pakiety zasobów usługi Databricks?

Szablony pakietów umożliwiają użytkownikom tworzenie pakietów w spójny, powtarzalny sposób przez ustanowienie struktur folderów, kroków kompilacji i zadań, testów i innych atrybutów infrastruktury jako kodu (IaC) metodyki DevOps wspólnych w potoku wdrażania środowiska deweloperskiego.

Jeśli na przykład rutynowo uruchamiasz zadania usługi Databricks, które wymagają niestandardowych pakietów z czasochłonnym krokiem kompilacji podczas instalacji, możesz przyspieszyć pętlę programowania, tworząc szablon pakietu, który obsługuje niestandardowe środowiska kontenerów.

Szablony pakietów definiują strukturę katalogów pakietu, który zostanie utworzony, i zawierają databricks.yml.tmpl szablon pliku konfiguracji, a także databricks_template_schema.json plik zawierający zmienne monitu użytkownika.

Tworzenie pakietu na podstawie szablonu

W tej sekcji opisano sposób używania szablonu pakietu — domyślnego szablonu pakietu usługi Azure Databricks lub niestandardowego szablonu pakietu.

Używanie domyślnego szablonu pakietu

Aby utworzyć pakiet przy użyciu domyślnego szablonu pakietu usługi Azure Databricks, użyj polecenia interfejsu wiersza polecenia bundle init usługi Databricks, określając nazwę szablonu domyślnego do użycia. Na przykład następujące polecenie tworzy pakiet przy użyciu domyślnego szablonu pakietu języka Python:

databricks bundle init default-python

Jeśli nie określisz szablonu domyślnego, bundle init polecenie przedstawia zestaw dostępnych szablonów, z których można wybrać.

Usługa Azure Databricks udostępnia następujące domyślne szablony pakietów:

Szablon opis
default-python Szablon do używania języka Python z usługą Databricks. Ten szablon tworzy pakiet z zadaniem i potokiem delty tabel na żywo. Zobacz default-python.
default-sql Szablon do używania języka SQL z usługą Databricks. Ten szablon zawiera plik konfiguracji, który definiuje zadanie uruchamiające zapytania SQL w usłudze SQL Warehouse. Zobacz default-sql.
dbt-sql Szablon, który korzysta z bazy danych dbt-core na potrzeby programowania lokalnego i pakietów do wdrożenia. Ten szablon zawiera konfigurację, która definiuje zadanie z zadaniem dbt, a także plik konfiguracji definiujący profile dbt dla wdrożonych zadań dbt. Zobacz dbt-sql.
mlops-stacks Zaawansowany szablon pełnego stosu do uruchamiania nowych projektów stosów MLOps. Zobacz mlops-stacks i Databricks Asset Bundles for MLOps Stacks (Pakiety zasobów usługi Databricks dla stosów MLOps).

Używanie niestandardowego szablonu pakietu

Aby użyć szablonu pakietu innego niż domyślne szablony pakietów usługi Azure Databricks, przekaż ścieżkę lokalną lub zdalny adres URL szablonu do polecenia interfejsu wiersza polecenia bundle init usługi Databricks.

Na przykład następujące polecenie używa szablonu utworzonego dab-container-template w samouczku dotyczącym szablonu pakietu niestandardowego:

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

Tworzenie szablonu pakietu

Szablony pakietów używają składni tworzenia szablonów pakietów języka Go. Zapoznaj się z dokumentacją szablonu pakietu Języka Go.

Co najmniej projekt szablonu pakietu musi mieć następujące elementy:

  • databricks_template_schema.json Plik w katalogu głównym projektu, który definiuje jedną zmienną monitu użytkownika dla nazwy projektu pakietu.
  • databricks.yml.tmpl Plik znajdujący się w folderze definiującym konfigurację template wszystkich pakietów utworzonych za pomocą szablonu. databricks.yml.tmpl Jeśli plik odwołuje się do dodatkowych *.yml.tmpl szablonów konfiguracji, określ lokalizację tych szablonów w mapowaniuinclude.

Opcjonalnie możesz dodać podfoldery i pliki do template folderu, który ma zostać zdublowany w pakietach utworzonych przez szablon.

Definiowanie zmiennych monitu użytkownika

Pierwszym krokiem tworzenia podstawowego szablonu pakietu jest utworzenie folderu projektu szablonu i pliku o nazwie databricks_template_schema.json w katalogu głównym projektu. Ten plik zawiera zmienne, dla których użytkownicy udostępniają wartości wejściowe, gdy używają szablonu do utworzenia pakietu przy użyciu polecenia bundle init. Format tego pliku jest zgodny ze specyfikacją schematu JSON.

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

Dodaj następujący kod do databricks_template_schema.json pliku, a następnie zapisz plik:

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

Zawartość tego pliku:

  • project_name jest jedyną nazwą zmiennej wejściowej.
  • default to opcjonalna wartość domyślna, jeśli wartość nie jest dostarczana przez użytkownika --config-file w ramach bundle init polecenia lub przesłaniana przez użytkownika w wierszu polecenia.
  • description to monit użytkownika skojarzony ze zmienną wejściową, jeśli wartość nie jest dostarczana przez użytkownika w --config-file ramach bundle init polecenia .
  • order to opcjonalna kolejność, w której każdy monit użytkownika jest wyświetlany, jeśli wartość nie jest dostarczana przez użytkownika w --config-file ramach bundle init polecenia. Jeśli order nie zostanie podana, monity użytkownika są wyświetlane w kolejności, w której są one wymienione w schemacie.
  • success_message jest opcjonalnym komunikatem wyświetlanym po pomyślnym utworzeniu projektu.

Tworzenie struktury folderów

Następnie utwórz wymagany template folder i skompiluj w nim strukturę folderów. Ta struktura będzie dublowana przez pakiety utworzone za pomocą tego szablonu. Ponadto umieść wszystkie pliki, które mają zostać dołączone do tych folderów. Ten podstawowy szablon pakietu przechowuje pliki w folderze src i zawiera jeden prosty notes.

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

Dodaj następujące elementy do simple_notebook.ipynb pliku:

print("Hello World!")

Wypełnianie plików szablonów konfiguracji

Teraz utwórz wymagany databricks.yml.tmpl plik w folderze template :

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

Wypełnij ten plik za pomocą podstawowego szablonu konfiguracji YAML. Ten szablon konfiguracji ustanawia nazwę pakietu, jedno zadanie przy użyciu określonego pliku notesu i dwa środowiska docelowe dla pakietów utworzonych przy użyciu tego szablonu. Wykorzystuje również podstawianie pakietów, co jest zdecydowanie zalecane. Zobacz podstawianie pakietów.

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

Testowanie szablonu pakietu

Na koniec przetestuj szablon. Utwórz nowy folder projektu pakietu, a następnie za pomocą interfejsu wiersza polecenia usługi Databricks zainicjuj nowy pakiet przy użyciu szablonu:

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

W wierszu polecenia What is your bundle project name?wpisz my_test_bundle.

Po utworzeniu pakietu testowego zostanie wyświetlony komunikat o powodzeniu z pliku schematu. Jeśli zbadasz zawartość my-test-bundle folderu, powinny zostać wyświetlone następujące elementy:

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

Plik databricks.yml jest teraz dostosowany:

# 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

Udostępnianie szablonu

Jeśli chcesz udostępnić ten szablon pakietu innym osobom, możesz przechowywać go w kontroli wersji za pomocą dowolnego dostawcy obsługiwanego przez usługę Git i do którego użytkownicy mają dostęp. Aby uruchomić polecenie przy bundle init użyciu adresu URL usługi Git, upewnij się, że databricks_template_schema.json plik znajduje się w lokalizacji głównej względem tego adresu URL usługi Git.

Napiwek

Plik można umieścić databricks_template_schema.json w innym folderze względem katalogu głównego pakietu. Następnie możesz użyć bundle init opcji polecenia --template-dir , aby odwołać się do tego folderu, który zawiera databricks_template_schema.json plik.

Następne kroki