Szablony projektów pakietu zasobów usługi Databricks
W tym artykule opisano składnię szablonów pakietu zasobów usługi Databricks. 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.
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 niestandardowego 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 ramachbundle 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
ramachbundle 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
ramachbundle init
polecenia. Jeśliorder
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
- Przeglądaj dodatkowe szablony tworzone i obsługiwane przez usługę Databricks. Zobacz repozytorium przykładów pakietów w usłudze GitHub.
- Aby używać stosów MLOps z szablonami pakietów zasobów usługi Databricks, zobacz Pakiety zasobów usługi Databricks dla stosów MLOps.
- Dowiedz się więcej o tworzeniu szablonów pakietów języka Go. Zapoznaj się z dokumentacją szablonu pakietu Języka Go.