Öğretici: İlk özel Databricks Varlık Paketi şablonunuzu oluşturma
Bu öğreticide, belirli bir Docker kapsayıcı görüntüsü kullanarak kümede belirli bir Python göreviyle iş çalıştıran paketler oluşturmak için özel bir Databricks Varlık Paketi şablonu oluşturacaksınız.
Başlamadan önce
Databricks CLI sürüm 0.218.0 veya üzerini yükleyin. Zaten yüklediyseniz, komut satırından çalıştırarak databricks -version
sürümün 0.218.0 veya üzeri olduğunu onaylayın.
Kullanıcı istemi değişkenlerini tanımlama
Paket şablonunu dağıtmanın ilk adımı, kullanıcı istemi değişkenlerini tanımlamaktır databricks bundle init
. Komut satırından:
adlı
dab-container-template
boş bir dizin oluşturun:mkdir dab-container-template
Dizinin kökünde adlı
databricks_template_schema.json
bir dosya oluşturun:cd dab-container-template touch databricks_template_schema.json
dosyasına aşağıdaki içeriği
databricks_template_schema.json
ekleyin ve dosyayı kaydedin. Her değişken, paket oluşturma sırasında bir kullanıcı istemine çevrilir.{ "properties": { "project_name": { "type": "string", "default": "project_name", "description": "Project name", "order": 1 } } }
Paket klasörü yapısını oluşturma
Ardından şablon dizininde ve src
adlı resources
alt dizinler oluşturun. klasör, template
oluşturduğunuz paketlerin dizin yapısını içerir. Alt dizinlerin ve dosyaların adları, kullanıcı değerlerinden türetildiğinde Go paket şablonu söz dizimini izler.
mkdir -p "template/resources"
mkdir -p "template/src"
YAML yapılandırma şablonları ekleme
dizininde template
adlı databricks.yml.tmpl
bir dosya oluşturun ve aşağıdaki YAML'yi ekleyin:
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 Delta Live Tables pipelines.
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 -}}
adlı {{.project_name}}_job.yml.tmpl
başka bir YAML dosyası oluşturun ve dizinine template/resources
yerleştirin. Bu yeni YAML dosyası, proje işi tanımlarını paket tanımının geri kalanından ayırır. Belirli bir Docker kapsayıcı görüntüsü kullanılarak bir iş kümesinde çalıştırılacak belirli bir Python görevini içeren şablon işini açıklamak için bu dosyaya aşağıdaki YAML'yi ekleyin:
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
Bu örnekte varsayılan Databricks temel Docker kapsayıcı görüntüsünü kullanırsınız, ancak bunun yerine kendi özel görüntünüzü belirtebilirsiniz.
Yapılandırmanızda başvurulan dosyaları ekleme
Ardından, bir template/src/{{.project_name}}
dizin oluşturun ve şablondaki işin başvuracağı Python görev dosyasını oluşturun:
mkdir -p template/src/{{.project_name}}
touch template/src/{{.project_name}}/task.py
Şimdi aşağıdakileri öğesine task.py
ekleyin:
import pyspark
from pyspark.sql import SparkSession
spark = SparkSession.builder.master('local[*]').appName('example').getOrCreate()
print(f'Spark version{spark.version}')
Paket şablonu yapısını doğrulama
Paket şablonu projenizin klasör yapısını gözden geçirin. Şu şekilde görünmelidir:
.
├── databricks_template_schema.json
└── template
├── databricks.yml.tmpl
├── resources
│ └── {{.project_name}}_job.yml.tmpl
└── src
└── {{.project_name}}
└── task.py
Şablonunuzu test edin
Son olarak paket şablonunuzu test edin. Yeni özel şablonunuzu temel alan bir paket oluşturmak için komutunu kullanarak databricks bundle init
yeni şablon konumunu belirtin. Paket projeleri kök klasörünüzden:
mkdir my-new-container-bundle
cd my-new-container-bundle
databricks bundle init dab-container-template
Sonraki adımlar
- Azure Databricks çalışma alanına not defteri dağıtan ve dağıtılan not defterini Azure Databricks işi olarak çalıştıran bir paket oluşturun. Bkz . Databricks Varlık Paketlerini kullanarak Azure Databricks'te iş geliştirme.
- Azure Databricks çalışma alanına not defteri dağıtan ve ardından dağıtılan not defterini Delta Live Tables işlem hattı olarak çalıştıran bir paket oluşturun. Bkz . Databricks Varlık Paketleri ile Delta Live Tables işlem hatları geliştirme.
- MLOps Yığını dağıtan ve çalıştıran bir paket oluşturun. Bkz. MLOps Yığınları için Databricks Varlık Paketleri.
- GitHub'da CI/CD (sürekli tümleştirme/sürekli dağıtım) iş akışına paket ekleyin. Bkz . Databricks Varlık Paketi ve GitHub Actions ile CI/CD iş akışı çalıştırma.