Condividi tramite


Dipendenze della libreria dei bundle di automazione dichiarativa

Questa pagina descrive la sintassi per dichiarare le dipendenze della libreria dei bundle di automazione dichiarativa. I bundle consentono la gestione a livello di codice delle risorse di Databricks. Vedere Che cosa sono i bundle di automazione dichiarativa?.

Oltre ai notebook e ai file di origine, i tuoi processi, le pipeline e altri carichi di lavoro dipenderanno probabilmente dalle librerie. Le dipendenze della libreria vengono dichiarate nei file di configurazione del bundle.

I pacchetti forniscono supporto per le dipendenze della libreria riportate di seguito:

  • File wheel di Python
  • File JAR (Java o Scala)
  • Pacchetti PyPI, Maven o CRAN

Per Python, puoi anche specificare le dipendenze in un file pyproject.toml e includerlo nel tuo pacchetto. Vedere uv e pyproject.toml.

Nota

L'eventuale supporto di una libreria dipende dalla configurazione del cluster e dall'origine della libreria. Per informazioni complete sul supporto delle librerie, vedere Installare le librerie.

File wheel di Python

Per aggiungere un file wheel di Python a un'attività lavorativa, specificare una mappatura per ogni libreria da installare. È possibile installare un file wheel dai file dell'area di lavoro, dai volumi del catalogo Unity, dall'archiviazione di oggetti cloud o da un percorso di file locale.

Importante

Le librerie possono essere installate da DBFS quando si usa Databricks Runtime 14.3 LTS e versioni successive. Tuttavia, qualsiasi utente dell'area di lavoro può modificare i file di libreria archiviati in DBFS. Per migliorare la sicurezza delle librerie in un'area di lavoro di Azure Databricks, l'archiviazione dei file di libreria nella radice DBFS è deprecata e disabilitata per impostazione predefinita in Databricks Runtime 15.1 e versioni successive. Vedi Archiviazione di librerie nella radice DBFS è deprecata e disabilitata per impostazione predefinita.

Databricks consiglia invece di caricare tutte le librerie, incluse le librerie Python, i file JAR e i connettori Spark, nei file dell'area di lavoro o nei volumi di Unity Catalog o usando i repository dei pacchetti di libreria. Se il carico di lavoro non supporta questi modelli, è anche possibile usare le librerie archiviate nell'archiviazione di oggetti cloud.

L'esempio seguente illustra come installare tre file Python wheel per un'attività lavorativa.

  • Il primo file della rotellina Python è stato caricato in precedenza nell'area di lavoro di Azure Databricks o aggiunto come include elemento nel syncmapping e si trova nella stessa cartella locale del file di configurazione del bundle.
  • Il secondo file wheel di Python si trova nel percorso specificato dei file nell'area di lavoro di Azure Databricks.
  • Il terzo file wheel python è stato caricato in precedenza nel volume denominato my-volume nell'area di lavoro di 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 o Scala)

Per aggiungere un file JAR a un'attività di processo, specificare libraries un jar mapping per ogni libreria da installare. È possibile installare un file JAR dai volumi del catalogo Unity, dall'archiviazione di oggetti cloud o da un percorso di file locale.

Importante

Le librerie possono essere installate da DBFS quando si usa Databricks Runtime 14.3 LTS e versioni successive. Tuttavia, qualsiasi utente dell'area di lavoro può modificare i file di libreria archiviati in DBFS. Per migliorare la sicurezza delle librerie in un'area di lavoro di Azure Databricks, l'archiviazione dei file di libreria nella radice DBFS è deprecata e disabilitata per impostazione predefinita in Databricks Runtime 15.1 e versioni successive. Vedi Archiviazione di librerie nella radice DBFS è deprecata e disabilitata per impostazione predefinita.

Databricks consiglia invece di caricare tutte le librerie, incluse le librerie Python, i file JAR e i connettori Spark, nei file dell'area di lavoro o nei volumi di Unity Catalog o usando i repository dei pacchetti di libreria. Se il carico di lavoro non supporta questi modelli, è anche possibile usare le librerie archiviate nell'archiviazione di oggetti cloud.

L'esempio seguente illustra come installare un file JAR caricato in precedenza nel volume denominato my-volume nell'area di lavoro di Azure Databricks.

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

Ad esempio, la configurazione che compila e distribuisce il file JAR, vedere Bundle che carica un file JAR in Unity Catalog. Per un'esercitazione che crea un progetto bundle che compila e distribuisce un JAR Scala, vedere Creare un JAR Scala utilizzando bundle di Automazione Dichiarativa.

Pacchetto PyPI

Per aggiungere un pacchetto PyPI a una definizione di attività del processo, in libraries specificare un pypi mapping per ogni pacchetto PyPI da installare. Per ogni mappatura, specificare quanto segue:

  • Per packagespecificare il nome del pacchetto PyPI da installare. È supportata anche una specifica di versione esatta facoltativa.
  • Facoltativamente, per repospecificare il repository in cui è possibile trovare il pacchetto PyPI. Se non specificato, viene usato l'indice predefinito pip (https://pypi.org/simple/).

L'esempio seguente illustra come installare due pacchetti PyPI.

  • Il primo pacchetto PyPI usa la versione del pacchetto specificata e l'indice predefinito pip .
  • Il secondo pacchetto PyPI usa la versione del pacchetto specificata e l'indice specificato in modo esplicito pip .
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/

Pacchetto Maven

Per aggiungere un pacchetto Maven a una definizione di attività di processo, in librariesspecificare un'associazione maven per ciascun pacchetto Maven da installare. Per ogni mappatura, specificare quanto segue:

  • Per coordinates, specificare le coordinate Maven in stile Gradle per il pacchetto.
  • Facoltativamente, per repospecificare il repository Maven da cui installare il pacchetto Maven. Se omesso, vengono eseguite ricerche sia nel repository centrale Maven che nel repository dei pacchetti Spark.
  • Facoltativamente, per exclusionsspecificare eventuali dipendenze da escludere in modo esplicito. Consulta Esclusioni delle dipendenze Maven.

Nell'esempio seguente viene illustrato come installare due pacchetti Maven.

  • Il primo pacchetto Maven usa le coordinate del pacchetto specificate e cerca questo pacchetto sia nel repository centrale Maven che nel repository dei pacchetti Spark.
  • Il secondo pacchetto Maven usa le coordinate del pacchetto specificate, cerca questo pacchetto solo nel repository centrale Maven e non include alcuna delle dipendenze di questo pacchetto che corrispondono al modello specificato.
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

Nota

uv è il metodo consigliato per la gestione delle dipendenze della libreria Python. Vedere uv e pyproject.toml.

Le dipendenze della libreria Python possono essere specificate anche in un requirements*.txt file incluso come parte della definizione dell'attività di processo. Il percorso del file può essere un percorso locale, un percorso dell'area di lavoro o un percorso del volume del catalogo Unity.

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

uv e pyproject.toml

Le dipendenze della libreria Python possono essere specificate in un pyproject.toml file incluso come parte del bundle:

[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

Creare artefatti bundle usando uv:

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

Per altre informazioni su uv, vedere Introduzione all'uv