Deklaratif Otomasyon Paketleri kütüphane bağımlılıkları

Bu sayfada Bildirim temelli Otomasyon Paketleri kitaplık bağımlılıklarını bildirmeye yönelik söz dizimi açıklanmaktadır. Paketler Databricks kaynaklarının programlı yönetimini sağlar. Bkz. Bildirim temelli Otomasyon Paketleri nelerdir?.

Not defterlerine ve kaynak dosyalara ek olarak işleriniz, işlem hatlarınız ve diğer iş yükleriniz büyük olasılıkla kitaplıklara bağlı olacaktır. Kitaplık bağımlılıkları paket yapılandırma dosyalarınızda bildirilir.

Paketler aşağıdaki kitaplık bağımlılıkları için destek sağlar:

  • Python tekerlek dosyası
  • JAR dosyası (Java veya Scala)
  • PyPI, Maven veya CRAN paketleri

Python için, pyproject.toml dosyasında bağımlılıkları belirtebilir ve bunu paketinize ekleyebilirsiniz. Bkz uv ve pyproject.toml.

Uyarı

Kitaplığın desteklenip desteklenmediği küme yapılandırmasına ve kitaplık kaynağına bağlıdır. Tam kitaplık destek bilgileri için bkz. Kitaplıkları yükleme.

Python tekerlek dosyası

bir iş görevine Python tekerlek dosyası eklemek için, libraries'da yüklenecek her kitaplık için bir whl eşlemesi belirtin. Çalışma alanı dosyalarından, Unity Kataloğu birimlerinden, bulut nesne depolama alanından veya yerel bir dosya yolundan tekerlek dosyası yükleyebilirsiniz.

Önemli

Kitaplıklar Databricks Runtime 14.3 LTS ve altı kullanılırken DBFS'den yüklenebilir. Ancak, herhangi bir çalışma alanı kullanıcısı DBFS'de depolanan kitaplık dosyalarını değiştirebilir. Azure Databricks çalışma alanında kitaplıkların güvenliğini artırmak için, kitaplık dosyalarını DBFS kökünde depolamak, Databricks Runtime 15.1 ve üzerinde varsayılan olarak kullanım dışıdır ve devre dışıdır. Bkz. Kitaplıkları DBFS kökünde depolamak artık önerilmiyor ve varsayılan olarak devre dışıdır.

Bunun yerine, Databricks Python kitaplıkları, JAR dosyaları ve Spark bağlayıcıları dahil olmak üzere tüm kitaplıkların çalışma alanı dosyalarına veya Unity Kataloğu birimlerine yüklenmesini ya da kitaplık paketi depolarının kullanılmasını önerir. İş yükünüz bu desenleri desteklemiyorsa, bulut nesne depolama alanında depolanan kitaplıkları da kullanabilirsiniz.

Aşağıdaki örnekte, bir iş görevi için üç Python tekerlek dosyasının nasıl yükleneceği gösterilmektedir.

  • İlk Python tekerlek dosyası daha önce Azure Databricks çalışma alanına yüklenmiş veya includesync içinde öğesi olarak eklenmiş ve paket yapılandırma dosyasıyla aynı yerel klasörde yer alır.
  • İkinci Python tekerlek dosyası, Azure Databricks çalışma alanında belirtilen çalışma alanı dosyaları konumundadır.
  • Üçüncü Python tekerlek dosyası daha önce Azure Databricks çalışma alanında my-volume adlı birime yüklenmişti.
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - whl: ./my-wheel-0.1.0.whl
            - whl: /Workspace/Shared/Libraries/my-wheel-0.0.1-py3-none-any.whl
            - whl: /Volumes/main/default/my-volume/my-wheel-0.1.0.whl

JAR dosyası (Java veya Scala)

Bir iş görevine JAR dosyası eklemek için libraries içinde yüklenecek her kitaplık için bir jar eşleme belirtin. Unity Kataloğu birimlerinden, bulut nesne depolama alanından veya yerel bir dosya yolundan JAR yükleyebilirsiniz.

Önemli

Kitaplıklar Databricks Runtime 14.3 LTS ve altı kullanılırken DBFS'den yüklenebilir. Ancak, herhangi bir çalışma alanı kullanıcısı DBFS'de depolanan kitaplık dosyalarını değiştirebilir. Azure Databricks çalışma alanında kitaplıkların güvenliğini artırmak için, kitaplık dosyalarını DBFS kökünde depolamak, Databricks Runtime 15.1 ve üzerinde varsayılan olarak kullanım dışıdır ve devre dışıdır. Bkz. Kitaplıkları DBFS kökünde depolamak artık önerilmiyor ve varsayılan olarak devre dışıdır.

Bunun yerine, Databricks Python kitaplıkları, JAR dosyaları ve Spark bağlayıcıları dahil olmak üzere tüm kitaplıkların çalışma alanı dosyalarına veya Unity Kataloğu birimlerine yüklenmesini ya da kitaplık paketi depolarının kullanılmasını önerir. İş yükünüz bu desenleri desteklemiyorsa, bulut nesne depolama alanında depolanan kitaplıkları da kullanabilirsiniz.

Aşağıdaki örnekte, daha önce Azure Databricks çalışma alanında my-volume adlı birime yüklenmiş bir JAR dosyasının nasıl yükleneceği gösterilmektedir.

resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - jar: /Volumes/main/default/my-volume/my-java-library-1.0.jar

JAR'ı derleyen ve dağıtan yapılandırma için bkz. Unity Kataloğu'na JAR dosyası yükleyen paket. Scala JAR oluşturmaya ve dağıtmaya yönelik bir paket projesi oluşturma öğreticisi için bakın: Scala JAR'ı Bildirimci Otomasyon Paketlerini Kullanarak Derleme.

PyPI paketi

bir iş görev tanımına PyPI paketi eklemek için, içinde librariesyüklenecek her PyPI paketi için bir pypi eşleme belirtin. Her eşleme için aşağıdakileri belirtin:

  • için package, yüklenecek PyPI paketinin adını belirtin. İsteğe bağlı tam sürüm belirtimi de desteklenir.
  • İsteğe bağlı olarak, için repoPyPI paketinin bulunabileceği depoyu belirtin. Belirtilmezse, varsayılan pip dizin kullanılır (https://pypi.org/simple/).

Aşağıdaki örnekte iki PyPI paketinin nasıl yükleneceği gösterilmektedir.

  • İlk PyPI paketi, belirtilen paket sürümünü ve varsayılan pip dizini kullanır.
  • İkinci PyPI paketi, belirtilen paket sürümünü ve açıkça belirtilen pip dizini kullanır.
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - pypi:
                package: wheel==0.41.2
            - pypi:
                package: numpy==1.25.2
                repo: https://pypi.org/simple/

Maven paketi

Bir iş görevi tanımına Maven paketi eklemek için, libraries içinde yüklenecek her Maven paketi için bir maven eşleme belirtin. Her eşleme için aşağıdakileri belirtin:

  • coordinates için, paket için Gradle tarzı Maven koordinatlarını belirtin.
  • İsteğe bağlı olarak, Maven paketinin yükleneceği Maven deposunu repo için belirtin. İhmal edilirse, hem Maven Merkezi Deposu hem de Spark Paketleri Deposu aranır.
  • İsteğe bağlı olarak, için exclusionsaçıkça dışlanması gereken bağımlılıkları belirtin. Bkz. Maven bağımlılık dışlamaları.

Aşağıdaki örnekte iki Maven paketinin nasıl yükleneceği gösterilmektedir.

  • İlk Maven paketi, belirtilen paket koordinatlarını kullanır ve bu paketi hem Maven Central Deposu'nda hem de Spark Packages Deposunda arar.
  • İkinci Maven paketi belirtilen paket koordinatlarını kullanır, bu paketi yalnızca Maven Central Deposunda arar ve bu paketin belirtilen desenle eşleşen bağımlılıklarını içermez.
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - maven:
                coordinates: com.databricks:databricks-sdk-java:0.8.1
            - maven:
                coordinates: com.databricks:databricks-dbutils-scala_2.13:0.1.4
                repo: https://mvnrepository.com/
                exclusions:
                  - org.scala-lang:scala-library:2.13.0-RC*

Python requirements.txt

Uyarı

uv, Python kitaplık bağımlılıklarını yönetmek için önerilen yöntemdir. Bkz uv ve pyproject.toml.

Python kitaplık bağımlılıkları, iş görev tanımının parçası olarak dahil edilen bir requirements*.txt dosyasında da belirtilebilir. Dosyanın yolu yerel yol, çalışma alanı yolu veya Unity Catalog birim yolu olabilir.

resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - requirements: ./local/path/requirements.txt

uv ve pyproject.toml

uv kullanarak Python kitaplık bağımlılıklarını eklemek için, bunları paketin parçası olan pyproject.toml dosyasında belirtin ve bunları dahil etmek için bir ortam bağımlılığı tanımlayın. hakkında uvdaha fazla bilgi için bkz. UV'ye giriş.

Örneğin, aşağıdaki pyproject.toml dosyası, numpy'i bağımlılık olarak ekler:

[project]
name = "test"
version = "0.0.1"
authors = [{ name = "someone@example.com" }]
requires-python = ">=3.10,<3.13"
dependencies = [
    # Any dependencies for jobs and pipelines in this project can be added here
    #
    # LIMITATION: for pipelines, dependencies are cached during development;
    # add dependencies to the 'environment' section of your pipeline.yml file instead

    "numpy==1.25.2"
]

[dependency-groups]
dev = [
    "pytest",
    "ruff",
    "databricks-dlt",
    "databricks-connect>=15.4,<15.5",
    "ipykernel",
]

[project.scripts]
main = "test.main:main"

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.ruff]
line-length = 120

Şimdi bu örnek işlem hattı yapılandırmasında pyproject.toml olduğu gibi dağıtıldığı pyproject.toml klasöre işaret eden düzenlenebilir bir ortam ekleyerek paket kaynak yapılandırmanızı içinde tanımlanan her bağımlılığı içerecek şekilde düzenleyin:

resources:
  pipelines:
    test_uv_etl:
      name: test_uv_etl
      catalog: ${var.catalog}
      schema: ${var.schema}
      serverless: true
      root_path: '../src/test_uv_etl'

      libraries:
        - glob:
            include: ../src/test_uv_etl/transformations/**

      environment:
        dependencies:
          - --editable ${workspace.file_path}

uv kullanarak paket artefaktları oluşturmak için:

# databricks.yml
...
artifacts:
  python_artifact:
    type: whl
    build: uv build --wheel
...