Zależności biblioteki pakietów automatyzacji deklaratywnej

Na tej stronie opisano składnię deklarowania zależności biblioteki pakietów automatyzacji deklaratywnej. Pakiety umożliwiają programowe zarządzanie zasobami usługi Databricks. Zobacz Co to są pakiety automatyzacji deklaratywnej?.

Oprócz notatników i plików źródłowych, zadania, potoki i inne procesy prawdopodobnie będą zależeć od bibliotek. Zależności bibliotek są deklarowane w plikach konfiguracji pakietu.

Pakiety zapewniają obsługę następujących zależności bibliotek:

  • plik koła Python
  • Plik JAR (Java lub Scala)
  • Pakiety PyPI, Maven lub CRAN

W przypadku Python można również określić zależności w pliku pyproject.toml i uwzględnić je w pakiecie. Zobacz uv i pyproject.toml.

Uwaga

To, czy biblioteka jest obsługiwana, zależy od konfiguracji klastra i źródła biblioteki. Aby uzyskać pełne informacje o obsłudze bibliotek, zobacz Instalowanie bibliotek.

plik koła Python

Aby dodać plik koła Python do zadania zadania, w libraries określ whl mapowanie dla każdej biblioteki do zainstalowania. Plik wheel można zainstalować z plików w przestrzeni roboczej, woluminów Katalogu Unity, przechowywania obiektów w chmurze lub lokalnej ścieżki.

Ważne

Biblioteki można instalować z systemu plików DBFS podczas korzystania z środowiska Databricks Runtime 14.3 LTS i poniżej. Jednak każdy użytkownik obszaru roboczego może modyfikować pliki biblioteki przechowywane w systemie plików DBFS. Aby zwiększyć bezpieczeństwo bibliotek w obszarze roboczym Azure Databricks, przechowywanie plików bibliotek w zasobach głównych DBFS jest niezalecane i domyślnie wyłączone w środowisku Databricks Runtime 15.1 lub nowszym. Zobacz Przechowywanie bibliotek w katalogu głównym systemu plików DBFS jest domyślnie przestarzałe i wyłączone.

Zamiast tego usługa Databricks zaleca przekazanie wszystkich bibliotek, w tym bibliotek Python, plików JAR i łączników platformy Spark, do plików obszaru roboczego lub woluminów Unity Catalog, lub użycie repozytoriów pakietów bibliotecznych. Jeśli obciążenie nie obsługuje tych wzorców, możesz również użyć bibliotek przechowywanych w magazynie obiektów w chmurze.

W poniższym przykładzie pokazano, jak zainstalować trzy pliki wheel Pythona dla zadania.

  • Pierwszy plik koła Python został wcześniej przekazany do obszaru roboczego Azure Databricks lub dodany jako element include w syncmapping i znajduje się w tym samym folderze lokalnym co plik konfiguracji pakietu.
  • Drugi plik koła Python znajduje się w określonej lokalizacji plików obszaru roboczego w obszarze roboczym Azure Databricks.
  • Trzeci plik koła Python został wcześniej przekazany do woluminu o nazwie my-volume w obszarze roboczym 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

JAR (Java lub Scala)

Aby dodać plik JAR do zadania, w libraries określ jar mapowanie dla każdej biblioteki do zainstalowania. Można zainstalować plik JAR z woluminów Unity Catalog, chmurowej pamięci obiektowej lub lokalnej ścieżki pliku.

Ważne

Biblioteki można instalować z systemu plików DBFS podczas korzystania z środowiska Databricks Runtime 14.3 LTS i poniżej. Jednak każdy użytkownik obszaru roboczego może modyfikować pliki biblioteki przechowywane w systemie plików DBFS. Aby zwiększyć bezpieczeństwo bibliotek w obszarze roboczym Azure Databricks, przechowywanie plików bibliotek w zasobach głównych DBFS jest niezalecane i domyślnie wyłączone w środowisku Databricks Runtime 15.1 lub nowszym. Zobacz Przechowywanie bibliotek w katalogu głównym systemu plików DBFS jest domyślnie przestarzałe i wyłączone.

Zamiast tego usługa Databricks zaleca przekazanie wszystkich bibliotek, w tym bibliotek Python, plików JAR i łączników platformy Spark, do plików obszaru roboczego lub woluminów Unity Catalog, lub użycie repozytoriów pakietów bibliotecznych. Jeśli obciążenie nie obsługuje tych wzorców, możesz również użyć bibliotek przechowywanych w magazynie obiektów w chmurze.

W poniższym przykładzie pokazano, jak zainstalować plik JAR, który został wcześniej przekazany do woluminu o nazwie my-volume w obszarze roboczym Azure Databricks.

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

Na przykład konfigurację, która kompiluje i wdraża plik JAR, zobacz Pakiet, który przekazuje plik JAR do katalogu Unity. Aby zapoznać się z samouczkiem, który tworzy projekt pakietu, który kompiluje i wdraża plik JAR języka Scala, zobacz Tworzenie pliku JAR scala przy użyciu pakietów deklaratywnej automatyzacji.

Pakiet PyPI

Aby dodać pakiet PyPI do definicji zadania, w libraries określ pypi mapowanie dla każdego pakietu PyPI do zainstalowania. Dla każdego mapowania określ następujące elementy:

  • W polu packageokreśl nazwę pakietu PyPI do zainstalowania. Obsługiwana jest również opcjonalna dokładna specyfikacja wersji.
  • Opcjonalnie w polu repookreśl repozytorium, w którym można znaleźć pakiet PyPI. Jeśli nie zostanie określony, używany jest indeks domyślny pip (https://pypi.org/simple/).

W poniższym przykładzie pokazano, jak zainstalować dwa pakiety PyPI.

  • Pierwszy pakiet PyPI używa określonej wersji pakietu i indeksu domyślnego pip .
  • Drugi pakiet PyPI używa określonej wersji pakietu i jawnie określonego pip indeksu.
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/

Pakiet Maven

Aby dodać pakiet Maven do definicji zadania, w pliku libraries określ maven mapowanie dla każdego pakietu Maven do zainstalowania. Dla każdego mapowania określ następujące elementy:

  • W polu coordinatesokreśl współrzędne narzędzia Maven w stylu Gradle dla pakietu.
  • Opcjonalnie w polu repookreśl repozytorium Maven, z których chcesz zainstalować pakiet Maven. W przypadku pominięcia przeszukiwane są zarówno centralne repozytorium Maven, jak i repozytorium pakietów Spark.
  • Opcjonalnie w polu exclusionsokreśl wszelkie zależności, które mają zostać jawnie wykluczone. Zobacz Wykluczenia zależności Maven.

W poniższym przykładzie pokazano, jak zainstalować dwa pakiety Maven.

  • Pierwszy pakiet Maven używa określonych współrzędnych pakietu i wyszukuje go zarówno w repozytorium centralnym maven, jak i repozytorium pakietów Spark.
  • Drugi pakiet Maven używa określonych współrzędnych pakietu, wyszukuje ten pakiet tylko w repozytorium centralnym maven i nie zawiera żadnych zależności tego pakietu pasujących do określonego wzorca.
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

Uwaga

uv jest zalecaną metodą zarządzania zależnościami biblioteki Python. Zobacz uv i pyproject.toml.

Zależności bibliotek Pythona można również określić w pliku requirements*.txt, który jest uwzględniony w ramach definicji zadania. Ścieżka do pliku może być ścieżką lokalną, ścieżką obszaru roboczego lub ścieżką woluminu katalogu Unity.

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

uv i plik konfiguracyjny pyproject.toml

Aby uwzględnić zależności biblioteki Python przy użyciu uv, określ je w pliku pyproject.toml, który jest częścią pakietu, a następnie zdefiniuj zależność środowiskową, aby je uwzględnić. Aby uzyskać więcej informacji na temat uv, zobacz Wprowadzenie do uv.

Na przykład następujący pyproject.toml plik dodaje numpy jako zależność:

[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

Teraz zmodyfikuj konfigurację zasobów pakietu, aby uwzględnić każdą zależność zdefiniowaną w elemencie pyproject.toml, poprzez dodanie edytowalnego środowiska, które wskazuje na folder, w którym pyproject.toml wdrożono, jak w tej przykładowej konfiguracji potoku:

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}

Aby skompilować artefakty pakietu przy użyciu polecenia uv:

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