Pular para o conteúdo principal

Dependências da biblioteca Declarative Automation Bundles

Esta página descreve a sintaxe para declarar dependências da biblioteca Declarative Automation Bundles. Os pacotes permitem o gerenciamento programático de recursos do Databricks . Veja O que são pacotes de automação declarativa?

Além do Notebook e dos arquivos de origem, seu Job, pipeline e outras cargas de trabalho provavelmente dependerão da biblioteca. As dependências da biblioteca são declaradas nos seus arquivos de configuração do pacote.

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

  • Python wheel arquivo
  • Arquivo JAR (Java ou Scala)
  • PyPI, Maven, ou CRAN pacote

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

nota

O suporte a uma biblioteca depende da configuração do clustering e da origem da biblioteca. Para obter informações completas sobre o suporte à biblioteca, consulte Instalar a biblioteca.

Python wheel arquivo

Para adicionar um arquivo Python wheel a uma tarefa de trabalho, em libraries especifique um mapeamento whl para cada biblioteca a ser instalada. O senhor pode instalar um arquivo de roda a partir de arquivos workspace, volumes Unity Catalog, armazenamento de objetos na nuvem ou um caminho de arquivo local.

importante

A biblioteca pode ser instalada a partir de DBFS ao usar Databricks Runtime 14.3 LTS e abaixo. No entanto, qualquer usuário do site workspace pode modificar os arquivos de biblioteca armazenados no site DBFS. Para aumentar a segurança da biblioteca em um Databricks workspace, o armazenamento de arquivos da biblioteca no DBFS root está obsoleto e desativado pelo default em Databricks Runtime 15.1 e acima. Consulte O armazenamento de biblioteca em DBFS root está obsoleto e desativado por default.

Em vez disso, o site Databricks recomenda o upload de todas as bibliotecas, incluindo Python biblioteca, JAR arquivos e Spark conectores, para workspace arquivos ou Unity Catalog volumes, ou usando repositórios de pacotes de biblioteca. Se sua carga de trabalho não for compatível com esses padrões, o senhor também poderá usar a biblioteca armazenada no armazenamento de objetos na nuvem.

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

  • O primeiro arquivo Python wheel foi carregado anteriormente para o Databricks workspace ou adicionado como um item include no mapeamento sync e está na mesma pasta local que o arquivo de configuração do pacote.
  • O segundo arquivo Python wheel está no local especificado para os arquivos workspace no site Databricks workspace.
  • O terceiro arquivo Python wheel foi carregado anteriormente para o volume denominado my-volume no site Databricks workspace.
YAML
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. O senhor pode instalar um JAR a partir dos volumes do Unity Catalog, do armazenamento de objetos na nuvem ou de um caminho de arquivo local.

importante

A biblioteca pode ser instalada a partir de DBFS ao usar Databricks Runtime 14.3 LTS e abaixo. No entanto, qualquer usuário do site workspace pode modificar os arquivos de biblioteca armazenados no site DBFS. Para aumentar a segurança da biblioteca em um Databricks workspace, o armazenamento de arquivos da biblioteca no DBFS root está obsoleto e desativado pelo default em Databricks Runtime 15.1 e acima. Consulte O armazenamento de biblioteca em DBFS root está obsoleto e desativado por default.

Em vez disso, o site Databricks recomenda o upload de todas as bibliotecas, incluindo Python biblioteca, JAR arquivos e Spark conectores, para workspace arquivos ou Unity Catalog volumes, ou usando repositórios de pacotes de biblioteca. Se sua carga de trabalho não for compatível com esses padrões, o senhor também poderá usar a biblioteca armazenada no armazenamento de objetos na nuvem.

O exemplo a seguir mostra como instalar um arquivo JAR que foi carregado anteriormente no volume denominado my-volume na pasta Databricks workspace.

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

Para obter um exemplo de configuração que cria e implanta o JAR, consulte o Bundle que carrega um arquivo JAR para o Unity Catalog. Para um tutorial que cria um projeto de pacote que compila e implanta um JAR Scala , consulte Criar um JAR Scala usando Pacotes de Automação Declarativa.

PyPI pacote

Para adicionar um pacote PyPI a uma definição de tarefa de 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. Uma especificação opcional da versão exata também é suportada.
  • Opcionalmente, para repo, especifique o repositório onde o pacote PyPI pode ser encontrado. Se não for especificado, será usado o índice default pip (https://pypi.org/simple/).

O exemplo a seguir mostra como instalar dois pacotes PyPI.

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

Para adicionar um pacote Maven a uma definição de tarefa de 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 para instalar o pacote Maven. Se omitido, o Repositório Central 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 Maven usa as coordenadas de pacote especificadas e procura esse pacote no Repositório Central Maven e no Repositório de pacotes Spark.
  • O segundo pacote Maven usa as coordenadas de pacote especificadas, procura esse pacote apenas no Repositório Central Maven e não inclui nenhuma das dependências desse pacote que correspondam ao padrão especificado.
YAML
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*

Requisitos do Python.txt

nota

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

Python As dependências da biblioteca também podem ser especificadas em um arquivo requirements*.txt que é incluído como parte da definição da tarefa do trabalho. O caminho para o arquivo pode ser um caminho local, um caminho workspace ou um caminho de volume Unity Catalog.

YAML
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 pacote e defina uma dependência de ambiente para incluí-las. Para obter mais informações sobre uv, consulte Introdução a uv.

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

YAML
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:

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