Biblioteksberoenden för deklarativa Automation-paket

På den här sidan beskrivs syntaxen för att deklarera biblioteksberoenden för deklarativa automatiseringspaket. Paket möjliggör programmatisk hantering av Databricks-resurser. Se även Vad är deklarativa automatiseringspaket?.

Förutom anteckningsböcker och källfiler, kommer dina jobb, pipelines och andra arbetslaster sannolikt att bero på bibliotek. Biblioteksberoenden deklareras i paketkonfigurationsfilerna.

Paket ger stöd för följande biblioteksberoenden:

  • Python hjulfil
  • JAR-fil (Java eller Scala)
  • PyPI-, Maven- eller CRAN-paket

För Python kan du också ange beroenden i en pyproject.toml-fil och inkludera den i ditt paket. Se uv och pyproject.toml.

Anteckning

Om ett bibliotek stöds beror på klusterkonfigurationen och bibliotekskällan. Fullständig information om biblioteksstöd finns i Installera bibliotek.

Python hjulfil

Om du vill lägga till en Python hjulfil i en jobbaktivitet i libraries anger du en whl mappning för varje bibliotek som ska installeras. Du kan installera en hjulfil från arbetsytefiler, Unity Catalog-volymer, molnobjektlagring eller en lokal filsökväg.

Viktigt!

Bibliotek kan installeras från DBFS när du använder Databricks Runtime 14.3 LTS och nedan. Alla arbetsyteanvändare kan dock ändra biblioteksfiler som lagras i DBFS. För att förbättra säkerheten för bibliotek på en Azure Databricks arbetsyta är lagring av biblioteksfiler i DBFS-roten inaktuell och inaktiverad som standard i Databricks Runtime 15.1 och senare. Se Lagra bibliotek i DBFS-roten är föråldrad och inaktiverad som standard.

Databricks föreslår att ladda upp alla bibliotek, inklusive Python-bibliotek, JAR-filer och Spark-kopplingar, till arbetsytefiler eller Unity Catalog-volymer eller genom att använda bibliotekspaketsdatabaser. Om din arbetsbelastning inte stöder dessa mönster kan du även använda bibliotek som lagras i molnobjektlagring.

I följande exempel visas hur du installerar tre Python hjulfiler för en jobbaktivitet.

  • Den första Python hjulfilen överfördes antingen tidigare till Azure Databricks-arbetsytan eller lades till som ett include objekt i syncmappning och finns i samma lokala mapp som paketkonfigurationsfilen.
  • Den andra Python hjulfilen finns på den angivna arbetsytans filplats i Azure Databricks arbetsytan.
  • Den tredje Python hjulfilen laddades tidigare upp till volymen med namnet my-volume på Azure Databricks arbetsytan.
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-fil (Java eller Scala)

För att lägga till en JAR-fil i ett jobb, ange en librariesjar mappning för varje bibliotek som ska installeras. Du kan installera en JAR från Unity Catalog-volymer, molnobjektlagring eller en lokal filsökväg.

Viktigt!

Bibliotek kan installeras från DBFS när du använder Databricks Runtime 14.3 LTS och nedan. Alla arbetsyteanvändare kan dock ändra biblioteksfiler som lagras i DBFS. För att förbättra säkerheten för bibliotek på en Azure Databricks arbetsyta är lagring av biblioteksfiler i DBFS-roten inaktuell och inaktiverad som standard i Databricks Runtime 15.1 och senare. Se Lagra bibliotek i DBFS-roten är föråldrad och inaktiverad som standard.

Databricks föreslår att ladda upp alla bibliotek, inklusive Python-bibliotek, JAR-filer och Spark-kopplingar, till arbetsytefiler eller Unity Catalog-volymer eller genom att använda bibliotekspaketsdatabaser. Om din arbetsbelastning inte stöder dessa mönster kan du även använda bibliotek som lagras i molnobjektlagring.

I följande exempel visas hur du installerar en JAR-fil som tidigare laddades upp till volymen med namnet my-volume på Azure Databricks-arbetsytan.

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

Exempel på konfiguration som skapar och distribuerar JAR-filen finns i Paket som laddar upp en JAR-fil till Unity Catalog. En självstudiekurs som skapar ett paketprojekt som skapar och distribuerar en Scala JAR finns i Skapa en Scala JAR med deklarativa automationspaket.

PyPI-paket

Om du vill lägga till ett PyPI-paket i en jobbaktivitetsdefinition anger du i librariesen pypi mappning för varje PyPI-paket som ska installeras. Ange följande för varje mappning:

  • För packageanger du namnet på PyPI-paketet som ska installeras. En valfri exakt versionsspecifikation stöds också.
  • Om du vill kan du för repoange den lagringsplats där PyPI-paketet finns. Om det inte anges används standardindexet pip (https://pypi.org/simple/).

I följande exempel visas hur du installerar två PyPI-paket.

  • Det första PyPI-paketet använder den angivna paketversionen och standardindexet pip .
  • Det andra PyPI-paketet använder den angivna paketversionen och det uttryckligen angivna pip indexet.
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-paket

Om du vill lägga till ett Maven-paket i en jobbaktivitetsdefinition anger du i librariesen maven mappning för varje Maven-paket som ska installeras. Ange följande för varje mappning:

  • För coordinates specificeras Maven-koordinater i Gradle-stil för paketet.
  • Du kan också ange maven-lagringsplatsen för att installera Maven-paketet från för repo. Om det utelämnas genomsöks både Maven Central-lagringsplatsen och Spark Packages-lagringsplatsen.
  • Du kan också ange eventuella beroenden som uttryckligen ska undantas för för exclusions. Se även Maven-beroendeuteslutningar.

I följande exempel visas hur du installerar två Maven-paket.

  • Det första Maven-paketet använder de angivna paketkoordinaterna och söker efter det här paketet i både Maven Central-lagringsplatsen och Spark Packages-lagringsplatsen.
  • Det andra Maven-paketet använder de angivna paketkoordinaterna, söker bara efter det här paketet i mavens centrala lagringsplats och inkluderar inte något av det här paketets beroenden som matchar det angivna mönstret.
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

Anteckning

uv är den rekommenderade metoden för att hantera Python biblioteksberoenden. Se uv och pyproject.toml.

Python biblioteksberoenden kan också anges i en requirements*.txt fil som ingår som en del av jobbaktivitetsdefinitionen. Sökvägen till filen kan vara en lokal sökväg, en arbetsytesökväg eller en volymsökväg för Unity Catalog.

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

uv och pyproject.toml

Om du vill inkludera Python biblioteksberoenden med hjälp av uv anger du dem i filen pyproject.toml som ingår i paketet och definierar sedan ett miljöberoende för att inkludera dem. Mer information om uvfinns i Introduktion till uv.

Till exempel lägger följande pyproject.toml fil till numpy som ett beroende:

[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

Redigera nu din paketresurskonfiguration så att den inkluderar alla beroenden som definieras i pyproject.toml genom att lägga till en redigerbar miljö som pekar på mappen där pyproject.toml den distribueras, till exempel i det här exemplet på pipelinekonfiguration:

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}

Så här skapar du samlingsartefakter med hjälp av uv:

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