Dependensi pustaka Bundel Otomatisasi Deklaratif

Halaman ini menguraikan sintaks untuk mendeklarasikan dependensi pustaka Bundel Otomatisasi Deklaratif. Bundel memungkinkan manajemen terprogram sumber daya Databricks. Lihat Apa itu Bundel Otomatisasi Deklaratif?.

Selain buku catatan dan file sumber, pekerjaan, alur, dan beban kerja lainnya kemungkinan akan bergantung pada pustaka. Dependensi perpustakaan disebutkan dalam file konfigurasi bundel Anda.

Paket menyediakan dukungan untuk dependensi pustaka berikut:

  • file roda Python
  • File JAR (Java atau Scala)
  • Paket PyPI, Maven, atau CRAN

Untuk Python, Anda juga dapat menentukan dependensi dalam file pyproject.toml dan menyertakannya dalam bundel Anda. Lihat uv dan pyproject.toml.

Catatan

Apakah pustaka didukung bergantung pada konfigurasi kluster dan sumber pustaka. Untuk informasi dukungan pustaka lengkap, lihat Menginstal pustaka.

file roda Python

Untuk menambahkan file roda Python ke tugas pekerjaan, di libraries tentukan pemetaan whl untuk setiap pustaka yang akan diinstal. Anda dapat menginstal file roda dari file ruang kerja, volume Katalog Unity, penyimpanan objek cloud, atau jalur file lokal.

Penting

Pustaka dapat diinstal dari DBFS saat menggunakan Databricks Runtime 14.3 LTS dan di bawahnya. Namun, setiap pengguna ruang kerja dapat memodifikasi file pustaka yang disimpan di DBFS. Untuk meningkatkan keamanan pustaka di ruang kerja Azure Databricks, menyimpan file pustaka di akar DBFS tidak digunakan lagi dan dinonaktifkan secara default di Databricks Runtime 15.1 ke atas. Lihat Menyimpan pustaka di akar DBFS tidak digunakan lagi dan dinonaktifkan secara default.

Sebagai gantinya, Databricks menganjurkan mengunggah semua pustaka, termasuk pustaka Python, file JAR, dan konektor Spark, ke file di ruang kerja atau volume Unity Catalog, atau menggunakan repositori paket pustaka. Jika beban kerja Anda tidak mendukung pola ini, Anda juga dapat menggunakan pustaka yang disimpan di penyimpanan objek cloud.

Contoh berikut menunjukkan cara menginstal tiga file roda Python untuk tugas pekerjaan.

  • File wheel Python pertama sudah diunggah sebelumnya ke ruang kerja Azure Databricks atau ditambahkan sebagai item include dalam syncmapping, dan berada di folder lokal yang sama dengan file konfigurasi bundel.
  • File roda Python kedua berada di lokasi file ruang kerja yang ditentukan di ruang kerja Azure Databricks.
  • File roda Python ketiga sebelumnya diunggah ke volume bernama my-volume di ruang kerja Azure Databricks.
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

file JAR (Java atau Scala)

Untuk menambahkan file JAR ke tugas, di libraries tentukan jar pemetaan untuk setiap pustaka yang akan diinstal. Anda dapat menginstal JAR dari volume katalog Unity, penyimpanan objek di cloud, atau jalur file lokal.

Penting

Pustaka dapat diinstal dari DBFS saat menggunakan Databricks Runtime 14.3 LTS dan di bawahnya. Namun, setiap pengguna ruang kerja dapat memodifikasi file pustaka yang disimpan di DBFS. Untuk meningkatkan keamanan pustaka di ruang kerja Azure Databricks, menyimpan file pustaka di akar DBFS tidak digunakan lagi dan dinonaktifkan secara default di Databricks Runtime 15.1 ke atas. Lihat Menyimpan pustaka di akar DBFS tidak digunakan lagi dan dinonaktifkan secara default.

Sebagai gantinya, Databricks menganjurkan mengunggah semua pustaka, termasuk pustaka Python, file JAR, dan konektor Spark, ke file di ruang kerja atau volume Unity Catalog, atau menggunakan repositori paket pustaka. Jika beban kerja Anda tidak mendukung pola ini, Anda juga dapat menggunakan pustaka yang disimpan di penyimpanan objek cloud.

Contoh berikut menunjukkan cara menginstal file JAR yang sebelumnya diunggah ke volume bernama my-volume di ruang kerja Azure Databricks.

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

Misalnya konfigurasi yang membangun dan menyebarkan JAR, lihat Bundel yang mengunggah file JAR ke Katalog Unity. Untuk tutorial yang membuat proyek bundel yang membangun dan menyebarkan JAR Scala, lihat Membangun JAR Scala menggunakan Bundel Otomatisasi Deklaratif.

Paket PyPI

Untuk menambahkan paket PyPI ke definisi tugas pekerjaan, di libraries, tentukan pypi pemetaan untuk setiap paket PyPI yang akan diinstal. Untuk setiap pemetaan, tentukan hal berikut:

  • Untuk package, tentukan nama paket PyPI yang akan diinstal. Dukungan juga diberikan untuk spesifikasi versi opsional yang tepat.
  • Secara opsional, untuk repo, tentukan repositori tempat paket PyPI dapat ditemukan. Jika tidak ditentukan, indeks default pip digunakan (https://pypi.org/simple/).

Contoh berikut menunjukkan cara menginstal dua paket PyPI.

  • Paket PyPI pertama menggunakan versi paket yang ditentukan dan indeks default pip .
  • Paket PyPI kedua menggunakan versi paket yang ditentukan dan indeks yang ditentukan pip secara eksplisit.
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/

Paket Maven

Untuk menambahkan paket Maven ke definisi tugas pekerjaan, di libraries, tentukan maven pemetaan untuk setiap paket Maven yang akan diinstal. Untuk setiap pemetaan, tentukan hal berikut:

  • Untuk coordinates, tentukan koordinat Maven bergaya Gradle untuk paket.
  • Secara opsional, untuk repo, tentukan repositori Maven untuk menginstal paket Maven. Jika tidak disebutkan, Repositori Pusat Maven dan Repositori Paket Spark akan dicari.
  • Secara opsional, untuk exclusions, tentukan dependensi apa pun untuk dikecualikan secara eksplisit. Lihat Dependensi Maven: Pengecualian.

Contoh berikut menunjukkan cara menginstal dua paket Maven.

  • Paket Maven pertama menggunakan koordinat paket yang ditentukan dan mencari paket ini di Repositori Pusat Maven dan Repositori Paket Spark.
  • Paket Maven kedua menggunakan koordinat paket yang ditentukan, mencari paket ini hanya di Repositori Pusat Maven, dan tidak menyertakan dependensi paket ini yang cocok dengan pola yang ditentukan.
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

Catatan

uv adalah metode yang direkomendasikan untuk mengelola dependensi pustaka Python. Lihat uv dan pyproject.toml.

Dependensi pustaka Python juga dapat ditentukan dalam file requirements*.txt yang disertakan sebagai bagian dari definisi tugas. Jalur ke file dapat berupa jalur lokal, jalur ruang kerja, atau jalur volume Katalog Unity.

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

uv dan pyproject.toml

Untuk menyertakan dependensi pustaka Python menggunakan uv, tentukan dalam file pyproject.toml yang merupakan bagian dari bundel lalu tentukan dependensi lingkungan untuk menyertakannya. Untuk informasi selengkapnya tentang uv, lihat Pengantar uv.

Misalnya, file berikut pyproject.toml ditambahkan numpy sebagai dependensi:

[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

Sekarang edit konfigurasi sumber daya bundel Anda untuk menyertakan setiap dependensi yang ditentukan dalam pyproject.toml, dengan menambahkan lingkungan yang dapat diedit yang menunjuk ke folder tempat pyproject.toml disebarkan, seperti dalam contoh konfigurasi alur ini:

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}

Untuk membangun artefak bundel menggunakan uv:

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