Compartilhar via


Dependências de bibliotecas dos Pacotes de Automação Declarativa

Esta página descreve a sintaxe para declarar dependências de Pacotes de Automação Declarativos nas bibliotecas. Os pacotes permitem o gerenciamento programático de recursos do Databricks. Veja o que são pacotes de automação declarativa?.

Além de notebooks e arquivos de origem, suas tarefas, pipelines e outras cargas de trabalho provavelmente dependerão de bibliotecas. As dependências da biblioteca são declaradas nos arquivos de configuração do pacote.

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

  • Python arquivo de roda
  • Arquivo JAR (Java ou Scala)
  • Pacotes PyPI, Maven ou CRAN

Para Python, você também pode especificar dependências em um arquivo de pyproject.toml e incluí-lo em seu pacote. Consulte uv e pyproject.toml.

Observação

Se há 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.

Python arquivo de roda

Para adicionar um arquivo de roda Python a uma tarefa de trabalho, em libraries especifique um mapeamento whl para cada biblioteca a ser instalada. Você pode instalar um arquivo wheel de arquivos do workspace, de volumes do Catálogo do Unity, de armazenamento de objetos na nuvem ou de 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. Porém, qualquer usuário do espaço de trabalho pode modificar os arquivos de biblioteca armazenados no DBFS. Para melhorar a segurança das bibliotecas em um workspace Azure Databricks, o armazenamento de arquivos de biblioteca na raiz do DBFS está preterido e desabilitado por padrão no Databricks Runtime 15.1 ou superior. Consulte O armazenamento de bibliotecas na raiz do DBFS é preterido e desabilitado por padrão.

Em vez disso, o Databricks recomenda carregar todas as bibliotecas, incluindo bibliotecas Python, arquivos JAR e conectores Spark, nos arquivos de workspace ou volumes do Catálogo do Unity ou usando repositórios de pacotes de biblioteca. Se sua carga de trabalho não der suporte a esses padrões, você também poderá usar bibliotecas armazenadas no armazenamento de objetos de nuvem.

O exemplo a seguir mostra como instalar três arquivos de roda Python para uma tarefa de trabalho.

  • O primeiro arquivo de roda Python foi carregado anteriormente no workspace Azure Databricks ou adicionado como um item include no syncmapping e está na mesma pasta local do arquivo de configuração do pacote.
  • O segundo arquivo wheel do Python está na localização de arquivos do espaço de trabalho especificado no Azure Databricks.
  • O terceiro arquivo de roda Python foi carregado anteriormente no volume chamado my-volume no workspace 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

arquivo JAR (Java ou Scala)

Para adicionar um arquivo JAR a uma tarefa de trabalho, em libraries, especifique um mapeamento jar para cada biblioteca a ser instalada. Você pode instalar um JAR de volumes do Catálogo do 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. Porém, qualquer usuário do espaço de trabalho pode modificar os arquivos de biblioteca armazenados no DBFS. Para melhorar a segurança das bibliotecas em um workspace Azure Databricks, o armazenamento de arquivos de biblioteca na raiz do DBFS está preterido e desabilitado por padrão no Databricks Runtime 15.1 ou superior. Consulte O armazenamento de bibliotecas na raiz do DBFS é preterido e desabilitado por padrão.

Em vez disso, o Databricks recomenda carregar todas as bibliotecas, incluindo bibliotecas Python, arquivos JAR e conectores Spark, nos arquivos de workspace ou volumes do Catálogo do Unity ou usando repositórios de pacotes de biblioteca. Se sua carga de trabalho não der suporte a esses padrões, você também poderá usar bibliotecas armazenadas no armazenamento de objetos de nuvem.

O exemplo a seguir mostra como instalar um arquivo JAR que foi carregado anteriormente no volume chamado my-volume no workspace 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 um exemplo de configuração que compila e implanta o JAR, veja o Pacote que envia um arquivo JAR para o Unity Catalog. Para obter um tutorial que cria um projeto de pacote que cria e implanta um JAR do Scala, consulte Criar um JAR scala usando pacotes de automação declarativa.

Pacote PyPi

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

  • Para package, especifique o nome do pacote PyPI a ser instalado. Também há suporte para uma especificação de versão exata opcional.
  • Opcionalmente, para repo, especifique o repositório onde o pacote PyPI pode ser encontrado. Se não for especificado, o índice de pip padrão 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 especificado e o índice padrão pip.
  • O segundo pacote PyPI usa a versão do pacote especificado 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 do Maven

Para adicionar um pacote Maven a uma definição de tarefa do trabalho, 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 do qual instalar o pacote Maven. Se omitido, o Repositório Central do Maven e o Repositório de Pacotes Spark serão pesquisados.
  • Opcionalmente, para exclusions, especifique quaisquer dependências a serem excluídas explicitamente. Consulte exclusões de dependência do Maven.

O exemplo a seguir mostra como instalar dois pacotes Maven.

  • O primeiro pacote do Maven usa as coordenadas de pacote especificadas e procura por esse pacote no Repositório Central do Maven e no Repositório de Pacotes do Spark.
  • O segundo pacote Maven usa as coordenadas de pacote especificadas, pesquisa esse pacote somente no Repositório Central do Maven e não inclui nenhuma das dependências desse 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

Observação

uv é o método recomendado para gerenciar dependências de biblioteca de Python. Consulte uv e pyproject.toml.

Dependências de biblioteca Python também podem ser especificadas em um arquivo requirements*.txt incluído como parte da definição da tarefa. O caminho para o arquivo pode ser um caminho local, um caminho do workspace ou um caminho do volume do Catálogo do 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 biblioteca Python usando uv, especifique-as no arquivo pyproject.toml que faz parte do conjunto e defina uma dependência de ambiente para estas. Para obter mais informações sobre uv, consulte Introdução ao uv.

Por exemplo, o arquivo pyproject.toml a seguir 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 de recursos do pacote para incluir todas as dependências definidas no pyproject.toml adicionando um ambiente editável que aponte para a pasta onde pyproject.toml está implantada, como nesta configuração de pipeline de exemplo:

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 criar artefatos de pacote usando uv:

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