Bibliotheekafhankelijkheden van Databricks Asset Bundles
In dit artikel worden de syntaxis beschreven voor het declareren van bibliotheekafhankelijkheden van Databricks Asset Bundles. Bundels maken programmatisch beheer van Azure Databricks-werkstromen mogelijk. Bekijk wat zijn Databricks Asset Bundles?.
Naast notebooks zijn uw Azure Databricks-taken waarschijnlijk afhankelijk van bibliotheken om naar verwachting te kunnen werken. Databricks Asset Bundles-afhankelijkheden voor lokale ontwikkeling worden opgegeven in het requirements*.txt
bestand in de hoofdmap van het bundelproject, maar taaktaakbibliotheekafhankelijkheden worden gedeclareerd in uw bundelconfiguratiebestanden en zijn vaak nodig als onderdeel van de taaktypespecificatie .
Bundels bieden ondersteuning voor de volgende bibliotheekafhankelijkheden voor Azure Databricks-taken:
- Python wheel-bestand
- JAR-bestand (Java of Scala)
- PyPI-, Maven- of CRAN-pakketten
Notitie
Of een bibliotheek wel of niet wordt ondersteund, is afhankelijk van de clusterconfiguratie voor de taak en de bibliotheekbron. Zie Bibliotheken voor volledige informatie over bibliotheekondersteuning.
Python wheel-bestand
Als u een Python-wielbestand aan een taaktaak wilt toevoegen, libraries
geeft u een whl
toewijzing op voor elke bibliotheek die moet worden geïnstalleerd. U kunt een wielbestand installeren vanuit werkruimtebestanden, Unity Catalog-volumes, cloudobjectopslag of een lokaal bestandspad.
Belangrijk
Bibliotheken kunnen worden geïnstalleerd vanuit DBFS wanneer u Databricks Runtime 14.3 LTS en hieronder gebruikt. Elke werkruimtegebruiker kan echter bibliotheekbestanden wijzigen die zijn opgeslagen in DBFS. Om de beveiliging van bibliotheken in een Azure Databricks-werkruimte te verbeteren, wordt het opslaan van bibliotheekbestanden in de DBFS-hoofdmap standaard afgeschaft en uitgeschakeld in Databricks Runtime 15.1 en hoger. Zie Opslaan van bibliotheken in dbFS-hoofdmap is afgeschaft en standaard uitgeschakeld.
In plaats daarvan beveelt Databricks aan om alle bibliotheken, inclusief Python-bibliotheken, JAR-bestanden en Spark-connectors, te uploaden naar werkruimtebestanden of Unity Catalog-volumes, of om gebruik te maken van bibliotheekpakketopslagplaatsen. Als uw workload deze patronen niet ondersteunt, kunt u ook bibliotheken gebruiken die zijn opgeslagen in de opslag van cloudobjecten.
In het volgende voorbeeld ziet u hoe u drie Python-wielbestanden voor een taaktaak installeert.
- Het eerste Python-wielbestand is eerder geüpload naar de Azure Databricks-werkruimte of toegevoegd als een
include
item in desync
toewijzing en bevindt zich in dezelfde lokale map als het bundelconfiguratiebestand. - Het tweede Python-wielbestand bevindt zich op de opgegeven locatie van werkruimtebestanden in de Azure Databricks-werkruimte.
- Het derde Python-wielbestand is eerder geüpload naar het volume met de naam
my-volume
in de Azure Databricks-werkruimte.
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-bestand
Als u een JAR-bestand wilt toevoegen aan een taaktaak, libraries
geeft u een jar
toewijzing op voor elke bibliotheek die moet worden geïnstalleerd. U kunt een JAR installeren vanuit werkruimtebestanden, Unity Catalog-volumes, cloudobjectopslag of een lokaal bestandspad.
Belangrijk
Bibliotheken kunnen worden geïnstalleerd vanuit DBFS wanneer u Databricks Runtime 14.3 LTS en hieronder gebruikt. Elke werkruimtegebruiker kan echter bibliotheekbestanden wijzigen die zijn opgeslagen in DBFS. Om de beveiliging van bibliotheken in een Azure Databricks-werkruimte te verbeteren, wordt het opslaan van bibliotheekbestanden in de DBFS-hoofdmap standaard afgeschaft en uitgeschakeld in Databricks Runtime 15.1 en hoger. Zie Opslaan van bibliotheken in dbFS-hoofdmap is afgeschaft en standaard uitgeschakeld.
In plaats daarvan beveelt Databricks aan om alle bibliotheken, inclusief Python-bibliotheken, JAR-bestanden en Spark-connectors, te uploaden naar werkruimtebestanden of Unity Catalog-volumes, of om gebruik te maken van bibliotheekpakketopslagplaatsen. Als uw workload deze patronen niet ondersteunt, kunt u ook bibliotheken gebruiken die zijn opgeslagen in de opslag van cloudobjecten.
In het volgende voorbeeld ziet u hoe u een JAR-bestand installeert dat eerder is geüpload naar het volume met de naam my-volume
in de Azure Databricks-werkruimte.
resources:
jobs:
my_job:
# ...
tasks:
- task_key: my_task
# ...
libraries:
- jar: /Volumes/main/default/my-volume/my-java-library-1.0.jar
PyPI-pakket
Als u een PyPI-pakket wilt toevoegen aan een taaktaakdefinitie, libraries
geeft u een pypi
toewijzing op voor elk PyPI-pakket dat moet worden geïnstalleerd. Geef voor elke toewijzing het volgende op:
-
package
Geef de naam op van het PyPI-pakket dat moet worden geïnstalleerd. Er wordt ook een optionele exacte versiespecificatie ondersteund. - Geef eventueel voor
repo
de opslagplaats op waar het PyPI-pakket kan worden gevonden. Als dit niet is opgegeven, wordt de standaardindexpip
gebruikt (https://pypi.org/simple/).
In het volgende voorbeeld ziet u hoe u twee PyPI-pakketten installeert.
- Het eerste PyPI-pakket maakt gebruik van de opgegeven pakketversie en de standaardindex
pip
. - Het tweede PyPI-pakket maakt gebruik van de opgegeven pakketversie en de expliciet opgegeven
pip
index.
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-pakket
Als u een Maven-pakket wilt toevoegen aan een taakdefinitie, libraries
geeft u een maven
toewijzing op voor elk Maven-pakket dat moet worden geïnstalleerd. Geef voor elke toewijzing het volgende op:
-
coordinates
Geef voor het pakket de Maven-coördinaten in Gradle-stijl op. - Geef desgewenst
repo
de Maven-opslagplaats op waaruit het Maven-pakket moet worden geïnstalleerd. Als u dit weglaat, worden zowel de centrale Maven-opslagplaats als de Spark Packages-opslagplaats doorzocht. - Geef eventueel
exclusions
eventuele afhankelijkheden op die expliciet moeten worden uitgesloten. Zie Uitsluitingen van Maven-afhankelijkheid.
In het volgende voorbeeld ziet u hoe u twee Maven-pakketten installeert.
- Het eerste Maven-pakket maakt gebruik van de opgegeven pakketcoördinaten en zoekt naar dit pakket in zowel de Centrale Opslagplaats van Maven als de Opslagplaats voor Spark-pakketten.
- Het tweede Maven-pakket maakt gebruik van de opgegeven pakketcoördinaten, zoekt alleen naar dit pakket in de Centrale Opslagplaats van Maven en bevat geen van de afhankelijkheden van dit pakket die overeenkomen met het opgegeven patroon.
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*