Partilhar via


A Automação Declarativa Agrupa dependências de bibliotecas

Esta página descreve a sintaxe para declarar dependências de bibliotecas de Pacotes de Automação Declarativa. Os bundles permitem a gestão programática dos recursos do Databricks. Veja o que são os Pacotes de Automação Declarativa?

Para além dos notebooks e ficheiros de código-fonte, os seus trabalhos, pipelines e outras cargas de trabalho provavelmente dependerão das bibliotecas. As dependências da biblioteca são declaradas nos ficheiros de configuração do bundle.

Os pacotes fornecem suporte para as seguintes dependências de biblioteca:

  • Ficheiro de roda Python
  • ficheiro JAR (Java ou Scala)
  • Pacotes PyPI, Maven ou CRAN

Para Python, também podes especificar dependências num ficheiro pyproject.toml e incluí-las no teu bundle. Veja uv e pyproject.toml.

Nota

O suporte para uma biblioteca depende da configuração do cluster e da origem da biblioteca. Para obter informações completas de suporte à biblioteca, consulte Instalar bibliotecas.

Ficheiro de roda Python

Para adicionar um ficheiro de volante Python a uma tarefa de trabalho, em libraries especificar um mapeamento whl para cada biblioteca a instalar. Você pode instalar um arquivo de roda a partir de arquivos de espaço de trabalho, volumes do Catálogo Unity, armazenamento de objetos na nuvem ou um caminho de arquivo local.

Importante

As bibliotecas podem ser instaladas a partir do DBFS ao usar o Databricks Runtime 14.3 LTS e inferior. No entanto, qualquer usuário do espaço de trabalho pode modificar arquivos de biblioteca armazenados no DBFS. Para melhorar a segurança das bibliotecas num espaço de trabalho Azure Databricks, o armazenamento de ficheiros de biblioteca na raiz do DBFS está obsoleto e desativado por padrão no Databricks Runtime 15.1 e superiores. Consulte O armazenamento de bibliotecas na raiz do DBFS está obsoleto e desativado por predefinição.

Em vez disso, o Databricks recomenda carregar todas as bibliotecas, incluindo bibliotecas Python, ficheiros JAR e conectores Spark, para ficheiros do espaço de trabalho ou volumes do Unity Catalog. Alternativamente, pode usar repositórios de pacotes de bibliotecas. Se sua carga de trabalho não oferecer suporte a esses padrões, você também poderá usar bibliotecas armazenadas no armazenamento de objetos na nuvem.

O exemplo seguinte mostra como instalar três ficheiros Python wheel para uma tarefa de trabalho.

  • O primeiro arquivo .whl do Python foi ou previamente carregado para o espaço de trabalho Azure Databricks, ou adicionado como um item include no syncmapeamento, e está na mesma pasta local do ficheiro de configuração do bundle.
  • O segundo ficheiro do volante Python encontra-se na localização especificada dos ficheiros de espaço de trabalho no espaço de trabalho do Azure Databricks.
  • O terceiro ficheiro wheel do Python foi anteriormente carregado para o volume chamado my-volume no espaço de trabalho do 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

ficheiro JAR (Java ou Scala)

Para adicionar um ficheiro JAR a uma tarefa, especifique um mapeamento librariesjar para cada biblioteca a ser instalada. Você pode instalar um JAR a partir de volumes do Catálogo Unity, armazenamento de objetos na nuvem ou um caminho de arquivo local.

Importante

As bibliotecas podem ser instaladas a partir do DBFS ao usar o Databricks Runtime 14.3 LTS e inferior. No entanto, qualquer usuário do espaço de trabalho pode modificar arquivos de biblioteca armazenados no DBFS. Para melhorar a segurança das bibliotecas num espaço de trabalho Azure Databricks, o armazenamento de ficheiros de biblioteca na raiz do DBFS está obsoleto e desativado por padrão no Databricks Runtime 15.1 e superiores. Consulte O armazenamento de bibliotecas na raiz do DBFS está obsoleto e desativado por predefinição.

Em vez disso, o Databricks recomenda carregar todas as bibliotecas, incluindo bibliotecas Python, ficheiros JAR e conectores Spark, para ficheiros do espaço de trabalho ou volumes do Unity Catalog. Alternativamente, pode usar repositórios de pacotes de bibliotecas. Se sua carga de trabalho não oferecer suporte a esses padrões, você também poderá usar bibliotecas armazenadas no armazenamento de objetos na nuvem.

O exemplo seguinte mostra como instalar um ficheiro JAR que foi previamente carregado para o volume chamado my-volume no espaço de trabalho Azure Databricks.

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

Para ver uma configuração que compila e implementa o JAR, consulte Bundle que carrega um JAR no Unity Catalog. Para um tutorial que cria um projeto bundle que constrói e implementa um JAR Scala, veja Construir um JAR Scala usando Pacotes de Automação Declarativa.

Pacote PyPI

Para adicionar um pacote PyPI a uma definição de tarefa de trabalho, em libraries, especifique um pypi mapeamento para cada pacote PyPI a ser instalado. Para cada mapeamento, especifique o seguinte:

  • Para package, especifique o nome do pacote PyPI a ser instalado. Uma especificação de versão exata opcional também é suportada.
  • Opcionalmente, para repo, especifique o repositório onde o pacote PyPI pode ser encontrado. Se não for especificado, o índice padrão pip será usado (https://pypi.org/simple/).

O exemplo a seguir mostra como instalar dois pacotes PyPI.

  • O primeiro pacote PyPI usa a versão do pacote especificada e o índice padrão pip .
  • O segundo pacote PyPI usa a versão do pacote especificada e o índice explicitamente especificado 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/

Pacote Maven

Para adicionar um pacote Maven a uma definição de tarefa, em libraries, especifique um mapeamento maven para cada pacote Maven a ser instalado. Para cada mapeamento, especifique o seguinte:

  • Para coordinates, especifique as coordenadas Maven no estilo Gradle para o pacote.
  • Opcionalmente, para repo, especifique o repositório Maven a partir do qual instalar o pacote Maven. Se omitido, o Repositório Central do Maven e o Repositório de Pacotes do Spark serão pesquisados.
  • Opcionalmente, para exclusions, especifique quaisquer dependências a serem excluídas explicitamente. Consulte Exclusões de dependências do Maven.

O exemplo a seguir mostra como instalar dois pacotes Maven.

  • O primeiro pacote Maven usa as coordenadas de pacote especificadas e procura esse pacote no Maven Central Repository e no Spark Packages Repository.
  • O segundo pacote Maven usa as coordenadas de pacote especificadas, procura esse pacote somente no Maven Central Repository e não inclui nenhuma das dependências deste pacote que correspondam ao padrão especificado.
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 é o método recomendado para gerir dependências de bibliotecas Python. Veja uv e pyproject.toml.

As dependências de bibliotecas Python também podem ser especificadas num ficheiro requirements*.txt que é incluído como parte da definição da tarefa. O caminho para o arquivo pode ser um caminho local, um caminho de espaço de trabalho ou um caminho de volume do Catálogo Unity.

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

uv e pyproject.toml

Para incluir dependências de bibliotecas Python usando uv, indique-as no ficheiro pyproject.toml que faz parte do conjunto e depois defina uma dependência de ambiente para as incluir. Para mais informações sobre uv, veja Introdução ao UV.

Por exemplo, o ficheiro seguinte pyproject.toml adiciona numpy como uma dependência:

[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

Agora edite a configuração do seu conjunto de recursos para incluir todas as dependências definidas no pyproject.toml , adicionando um ambiente editável que aponte para a pasta onde pyproject.toml é implementada, como neste exemplo de configuração de pipeline:

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}

Para construir artefactos em conjunto usando uv:

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