Compartilhar via


Dependências da biblioteca dos Pacotes de Ativos do Databricks

Este artigo descreve a sintaxe para declarar as dependências da biblioteca dos Pacotes de Ativos do Databricks. Os pacotes permitem o gerenciamento programático de trabalhos do Lakeflow. Veja que são pacotes de ativos do Databricks?.

Além de notebooks e arquivos de origem, seus trabalhos provavelmente dependerão de bibliotecas para funcionar conforme o esperado. As dependências de biblioteca são declaradas em seus arquivos de configuração de pacote e geralmente são necessárias como parte da especificação do tipo de tarefa de trabalho .

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

  • Arquivo wheel do Python
  • Arquivo JAR (Java ou Scala)
  • Pacotes PyPI, Maven ou CRAN

Para o Python, você também pode especificar dependências de tarefa de trabalho em um arquivo requirements.txt e incluí-lo em seu pacote. Consulte Python requirements.txt.

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.

Arquivo wheel do Python

Para adicionar um arquivo wheel do 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 do Azure Databricks, o armazenamento de arquivos de biblioteca na raiz do DBFS foi preterido e desabilitado por padrão no Databricks Runtime 15.1 e em versões posteriores. 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, para 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 wheel do Python de uma tarefa de trabalho.

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

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 do Azure Databricks, o armazenamento de arquivos de biblioteca na raiz do DBFS foi preterido e desabilitado por padrão no Databricks Runtime 15.1 e em versões posteriores. 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, para 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 nomeado my-volume no workspace do 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 compila e implanta um JAR do Scala, consulte Criar um JAR scala usando pacotes de ativos do Databricks.

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*

requirements.txt do Python

As dependências da biblioteca do Python também podem ser especificadas em um requirements*.txt arquivo incluído como parte da definição da tarefa de trabalho. 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