Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
"Python Varlık Paketleri Databricks için Databricks Varlık Paketlerini genişleterek şu işlemleri yapabilirsiniz:"
- Python kodunda kaynakları tanımlayın. Bu tanımlar YAML'de tanımlanan kaynaklarla birlikte bulunabilir.
- Meta verileri kullanarak dinamik olarak kaynak oluşturun. Bkz. Meta verileri kullanarak kaynak oluşturma.
- Paket dağıtımı sırasında YAML veya Python'da tanımlanan kaynakları değiştirin. Bkz . YAML veya Python'da tanımlanan kaynakları değiştirme.
Databricks Varlık Paketleri databricks-bundles paketi için Python desteğine yönelik başvuru belgelerine adresinden https://databricks.github.io/cli/python/ulaşabilirsiniz.
Gereksinimler
Databricks Varlık Paketleri için Python desteğini kullanmak için önce şunları gerçekleştirmeniz gerekir:
Databricks CLI, sürüm 0.275.0 veya üzerini yükleyin. Bkz. Databricks CLI'yı yükleme veya güncelleştirme.
Henüz yapmadıysanız Databricks çalışma alanınızda kimlik doğrulaması yapın:
databricks configureuv yükleyin. Bkz . Uv yükleme. Databricks Varlık Paketleri için Python, sanal ortam oluşturmak ve gerekli bağımlılıkları yüklemek için uv kullanır. Alternatif olarak, venv gibi diğer araçları kullanarak Python ortamınızı yapılandırabilirsiniz.
Şablondan proje oluşturma
Databricks Varlık Paketleri projesi için yeni bir Python desteği oluşturmak için şablonu kullanarak pydabs bir paket başlatın:
databricks bundle init pydabs
İstendiğinde projenize gibi my_pydabs_projectbir ad verin ve not defteri ile Python paketinin eklenmesini kabul edin.
Şimdi yeni proje klasörünüzde yeni bir sanal ortam oluşturun:
cd my_pydabs_project
uv sync
Varsayılan olarak, şablon dosyada resources/my_pydabs_project_job.py Python olarak tanımlanan bir iş örneği içerir:
from databricks.bundles.jobs import Job
my_pydabs_project_job = Job.from_dict(
{
"name": "my_pydabs_project_job",
"tasks": [
{
"task_key": "notebook_task",
"notebook_task": {
"notebook_path": "src/notebook.ipynb",
},
},
],
},
)
İşlev, Job.from_dict YAML ile aynı biçimi kullanan bir Python sözlüğü kabul eder. Kaynaklar, veri sınıfı söz dizimi kullanılarak da oluşturulabilir:
from databricks.bundles.jobs import Job, Task, NotebookTask
my_pydabs_project_job = Job(
name="my_pydabs_project_job",
tasks=[
Task(
task_key="notebook_task",
notebook_task=NotebookTask(
notebook_path="src/notebook.ipynb",
),
),
],
)
Python dosyaları, içindeki pythonbölümünde belirtilen databricks.yml bir giriş noktası üzerinden yüklenir:
python:
# Activate the virtual environment before loading resources defined in
# Python. If disabled, it defaults to using the Python interpreter
# available in the current shell.
venv_path: .venv
# Functions called to load resources defined in Python.
# See resources/__init__.py
resources:
- 'resources:load_resources'
Varsayılan olarak, resources/__init__.py kaynak paketindeki tüm Python dosyalarını yükleyen bir işlev içerir.
from databricks.bundles.core import (
Bundle,
Resources,
load_resources_from_current_package_module,
)
def load_resources(bundle: Bundle) -> Resources:
"""
'load_resources' function is referenced in databricks.yml and is responsible for loading
bundle resources defined in Python code. This function is called by Databricks CLI during
bundle deployment. After deployment, this function is not used.
"""
# the default implementation loads all Python files in 'resources' directory
return load_resources_from_current_package_module()
İşleri veya işlem hatlarını dağıtma ve çalıştırma
Paketi geliştirme hedefine dağıtmak için paket projesi kökünden paket dağıtma komutunu kullanın:
databricks bundle deploy --target dev
Bu komut paket projesi için tanımlanan her şeyi dağıtır. Örneğin, varsayılan şablon kullanılarak oluşturulan bir proje, çalışma alanınıza adlı [dev yourname] my_pydabs_project_job bir iş dağıtır. Databricks çalışma alanınızdaki İşler ve İşlem Hatları'na giderek bu işi bulabilirsiniz.
Paket dağıtıldıktan sonra, dağıtılan her şeyi gözden geçirmek için paket özeti komutunu kullanabilirsiniz:
databricks bundle summary --target dev
Son olarak, bir işi veya işlem hattını çalıştırmak için paket çalıştırma komutunu kullanın:
databricks bundle run my_pydabs_project_job
Mevcut paketleri güncelleştirme
Mevcut paketleri güncelleştirmek için, şablondan proje oluşturma başlığında açıklandığı gibi proje şablonu yapısını modelleyin. YAML ile mevcut paketler, içinde bir python bölüm databricks.ymleklenerek Python kodu olarak tanımlanan kaynakları içerecek şekilde güncelleştirilebilir:
python:
# Activate the virtual environment before loading resources defined in
# Python. If disabled, it defaults to using the Python interpreter
# available in the current shell.
venv_path: .venv
# Functions called to load resources defined in Python.
# See resources/__init__.py
resources:
- 'resources:load_resources'
Belirtilen sanal ortam yüklü databricks-bundles PyPi paketini içermelidir.
pip install databricks-bundles==0.275.0
Resources klasörü dosya içermelidir __init__.py :
from databricks.bundles.core import (
Bundle,
Resources,
load_resources_from_current_package_module,
)
def load_resources(bundle: Bundle) -> Resources:
"""
'load_resources' function is referenced in databricks.yml and
is responsible for loading bundle resources defined in Python code.
This function is called by Databricks CLI during bundle deployment.
After deployment, this function is not used.
"""
# default implementation loads all Python files in 'resources' folder
return load_resources_from_current_package_module()
Mevcut işleri Python'a dönüştürme
Mevcut işleri Python'a dönüştürmek için Kod olarak görüntüle özelliğini kullanabilirsiniz. Bkz. İşleri kod olarak görüntüleme.
Databricks çalışma alanında var olan işin sayfasını açın.
Şimdi çalıştır düğmesinin sol tarafındaki kebap öğesine ve ardından Kod olarak görüntüle'ye tıklayın:
Python'ı ve ardından Databricks Varlık Paketleri'yi seçin
Kopyala'ya tıklayın ve oluşturulan Python'ı paket projesinin resources klasörüne Python dosyası olarak kaydedin.
Tavsiye
Ayrıca, doğrudan paket yapılandırma YAML dosyalarınıza yapıştırabileceğiniz mevcut işler ve işlem hatları için YAML'yi görüntüleyebilir ve kopyalayabilirsiniz.
Meta verileri kullanarak kaynak oluşturma
İşlevin load_resources varsayılan uygulaması paketteki resources Python dosyalarını yükler. Program aracılığıyla kaynak oluşturmak için Python kullanabilirsiniz. Örneğin, yapılandırma dosyalarını yükleyebilir ve döngüde işler oluşturabilirsiniz:
from databricks.bundles.core import (
Bundle,
Resources,
load_resources_from_current_package_module,
)
from databricks.bundles.jobs import Job
def create_job(country: str):
my_notebook = {
"task_key": "my_notebook",
"notebook_task": {
"notebook_path": "files/my_notebook.py",
},
}
return Job.from_dict(
{
"name": f"my_job_{country}",
"tasks": [my_notebook],
}
)
def load_resources(bundle: Bundle) -> Resources:
resources = load_resources_from_current_package_module()
for country in ["US", "NL"]:
resources.add_resource(f"my_job_{country}", create_job(country))
return resources
Paket değişkenlerine erişme
bundle parametresi paket değişkenlerine ve dağıtım hedefine erişmek için kullanılabilir:
from databricks.bundles.core import Bundle, Resources, Variable, variables
@variables
class Variables:
warehouse_id: Variable[str]
def load_resources(bundle: Bundle) -> Resources:
warehouse_id = bundle.resolve_variable(Variables.warehouse_id)
...
Daha fazla bilgi için Kaynaklar ve Paket sınıfı başvurusuna bakın.
YAML veya Python'da tanımlanan kaynakları değiştirme
kaynak yükleme işlevlerine benzer şekilde içindeki databricks.ymlmutator işlevlerine başvurabilirsiniz. Bu özellik, Python'da tanımlanan kaynakların yüklenmesinden bağımsız olarak kullanılabilir ve hem YAML hem de Python'da tanımlanan kaynakları değiştirir.
Öncelikle, mutators.py'yi paket kökünde aşağıdaki içeriklerle oluşturun:
from dataclasses import replace
from databricks.bundles.core import Bundle, job_mutator
from databricks.bundles.jobs import Job, JobEmailNotifications
@job_mutator
def add_email_notifications(bundle: Bundle, job: Job) -> Job:
if job.email_notifications:
return job
email_notifications = JobEmailNotifications.from_dict(
{
"on_failure": ["${workspace.current_user.userName}"],
}
)
return replace(job, email_notifications=email_notifications)
Şimdi paket dağıtımı sırasında işlevi yürütmek için aşağıdaki yapılandırmayı add_email_notifications kullanın. Bu, pakette tanımlanan her işi e-posta bildirimleri eksikse günceller. Mutator işlevlerinin içinde databricks.ymlbelirtilmesi ve belirtilen sırada yürütülmesi gerekir. İş mutator'ları bir pakette tanımlanan her iş için yürütülür ve güncelleştirilmiş bir kopya veya değiştirilmemiş giriş döndürebilir. Mutator'lar, varsayılan iş kümelerini veya SQL ambarlarını yapılandırma gibi diğer alanlar için de kullanılabilir.
python:
mutators:
- 'mutators:add_email_notifications'
İşlevler, mutator yürütmesi sırasında bir özel durum oluşturursa paket dağıtımı durduruldu.