Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym samouczku utworzysz niestandardowy szablon pakietu zasobów usługi Databricks na potrzeby tworzenia pakietów, które uruchamiają zadanie z określonym zadaniem języka Python w klastrze przy użyciu określonego obrazu kontenera platformy Docker.
Aby uzyskać informacje na temat szablonów pakietów niestandardowych, zobacz Szablony pakietów niestandardowych.
Wymagania
- Zainstaluj wersję 0.218.0 lub nowszą interfejsu wiersza polecenia usługi Databricks. Jeśli został już zainstalowany, upewnij się, że wersja to 0.218.0 lub nowsza, uruchamiając polecenie
databricks -versionz poziomu wiersza polecenia.
Definiowanie zmiennych monitu użytkownika
Pierwszym krokiem tworzenia szablonu pakietu jest zdefiniowanie zmiennych monitu użytkownika databricks bundle init. Z wiersza polecenia:
Utwórz pusty katalog o nazwie
dab-container-template:mkdir dab-container-templateW katalogu głównym utwórz plik o nazwie
databricks_template_schema.json:cd dab-container-template touch databricks_template_schema.jsonDodaj następującą zawartość do
databricks_template_schema.jsoni zapisz plik. Każda zmienna zostanie przetłumaczona na monit użytkownika podczas tworzenia pakietu.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Utwórz strukturę folderów pakietu
Następnie w katalogu szablonów utwórz podkatalogi o nazwie resources i src. Folder template zawiera strukturę katalogów wygenerowanych pakietów. Nazwy podkatalogów i plików będą zgodne ze składnią szablonu pakietu Go, gdy pochodzą z wartości użytkownika.
mkdir -p "template/resources"
mkdir -p "template/src"
Dodawanie szablonów konfiguracji YAML
W katalogu template utwórz plik o nazwie databricks.yml.tmpl i dodaj następujący kod YAML. W tym przykładzie użyto pomocników szablonów pakietu .
touch template/databricks.yml.tmpl
# This is a Databricks asset bundle definition for {{.project_name}}.
# See https://docs.databricks.com/dev-tools/bundles/index.html for documentation.
bundle:
name: {{.project_name}}
include:
- resources/*.yml
targets:
# The 'dev' target, used for development purposes.
# Whenever a developer deploys using 'dev', they get their own copy.
dev:
# We use 'mode: development' to make sure everything deployed to this target gets a prefix
# like '[dev my_user_name]'. Setting this mode also disables any schedules and
# automatic triggers for jobs and enables the 'development' mode for :re[LDP].
mode: development
default: true
workspace:
host: {{workspace_host}}
# The 'prod' target, used for production deployment.
prod:
# For production deployments, we only have a single copy, so we override the
# workspace.root_path default of
# /Workspace/Users/${workspace.current_user.userName}/.bundle/${bundle.target}/${bundle.name}
# to a path that is not specific to the current user.
#
# By making use of 'mode: production' we enable strict checks
# to make sure we have correctly configured this target.
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
# (see Databricks documentation).
user_name: {{user_name}}
{{end -}}
Utwórz inny plik YAML o nazwie {{.project_name}}_job.yml.tmpl i umieść go w katalogu template/resources. Ten nowy plik YAML dzieli definicje zadań projektu z pozostałej części definicji pakietu. Dodaj następujący kod YAML do tego pliku, aby opisać zadanie szablonu, które zawiera określone zadanie języka Python do uruchomienia w klastrze zadań przy użyciu określonego obrazu kontenera platformy Docker:
touch template/resources/{{.project_name}}_job.yml.tmpl
# The main job for {{.project_name}}
resources:
jobs:
{{.project_name}}_job:
name: {{.project_name}}_job
tasks:
- task_key: python_task
job_cluster_key: job_cluster
spark_python_task:
python_file: ../src/{{.project_name}}/task.py
job_clusters:
- job_cluster_key: job_cluster
new_cluster:
docker_image:
url: databricksruntime/python:10.4-LTS
node_type_id: i3.xlarge
spark_version: 13.3.x-scala2.12
W tym przykładzie używasz domyślnego obrazu kontenera Dockera z Databricks, ale możesz również określić własny, niestandardowy obraz.
Dodawanie plików, do których odwołuje się konfiguracja
Następnie utwórz katalog template/src/{{.project_name}} i utwórz plik zadania Python, do którego odwołuje się zadanie w szablonie.
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
Teraz dodaj następujące elementy do task.py:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
Weryfikowanie struktury szablonu pakietu
Przejrzyj strukturę folderów projektu szablonu pakietu. Powinien wyglądać następująco:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
Testowanie szablonu
Na koniec przetestuj szablon pakietu. Aby wygenerować pakiet na podstawie nowego szablonu niestandardowego, użyj polecenia databricks bundle init, określając nową lokalizację szablonu. Z folderu głównego twoich projektów pakietu:
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
Następne kroki
- Utwórz pakiet, który wdraża notes w obszarze roboczym usługi Azure Databricks, a następnie uruchamia ten notes jako zadanie usługi Azure Databricks. Zobacz Tworzenie zadania przy użyciu pakietów zasobów usługi Databricks.
- Utwórz pakiet wdrożeniowy, który wdraża notatnik w obszarze roboczym usługi Azure Databricks, a następnie uruchamia ten wdrożony notatnik jako potok ETL. Zobacz Develop Lakeflow Spark Deklaratative Pipelines with Databricks Asset Bundles (Tworzenie potoków deklaratywnych platformy Spark w usłudze Lakeflow przy użyciu pakietów zasobów usługi Databricks).
- Utwórz pakiet, który wdraża i uruchamia platformę MLOps. Zobacz Pakiety zasobów platformy Databricks dla platform MLOps.
- Dodaj zestaw do przepływu pracy CI/CD (ciągła integracja/ciągłe wdrażanie) w GitHub. Zobacz GitHub Actions.
Zasoby
- repozytorium przykładów pakietu w usłudze GitHub