Udostępnij przez


Zależności biblioteki pakietów zasobów Databricks

W tym artykule opisano składnię deklarowania zależności bibliotek dla pakietów zasobów Databricks. Pakiety umożliwiają zarządzanie programowe zadaniami Lakeflow. Zobacz Co to są pakiety zasobów usługi Databricks?.

Oprócz notatników i plików źródłowych, twoje zadania będą prawdopodobnie zależeć od bibliotek, żeby działały zgodnie z oczekiwaniami. Zależności bibliotek są deklarowane w plikach konfiguracji pakietu i często są niezbędne jako część specyfikacji typu zadania w ramach pracy.

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

  • Plik wheel języka Python
  • Plik JAR (Java lub Scala)
  • Pakiety PyPI, Maven lub CRAN

W przypadku języka Python można również określić zależności zadań w pliku requirements.txt i uwzględnić je w pakiecie. Zobacz python requirements.txt.

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 wheel języka Python

Aby dodać plik wheel języka Python do 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 usługi Azure Databricks, przechowywanie plików bibliotek w katalogu głównym systemu plików DBFS zostało uznane za niezalecane i jest domyślnie wyłączone w środowisku Databricks Runtime 15.1 i nowszych wersjach. 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 przekazywanie wszystkich bibliotek, w tym bibliotek języka Python, plików JAR i łączników platformy Spark, do plików obszaru roboczego, woluminów Unity Catalog lub korzystanie z repozytoriów pakietów biblioteki. 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 koła języka Python dla zadania zadania podrzędnego.

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

Plik 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 usługi Azure Databricks, przechowywanie plików bibliotek w katalogu głównym systemu plików DBFS zostało uznane za niezalecane i jest domyślnie wyłączone w środowisku Databricks Runtime 15.1 i nowszych wersjach. 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 przekazywanie wszystkich bibliotek, w tym bibliotek języka Python, plików JAR i łączników platformy Spark, do plików obszaru roboczego, woluminów Unity Catalog lub korzystanie z repozytoriów pakietów biblioteki. 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 usługi 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 zawierającym projekt pakietu, który buduje i wdraża plik JAR Scala, zobacz Tworzenie pliku JAR Scala przy użyciu pakietów zasobów usługi Databricks.

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*

requirements.txt języka Python

Zależności biblioteki języka Python można również określić w pliku requirements*.txt dołączonym do 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