Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As organizações geralmente mantêm muitos pacotes e, nesses cenários mais avançados de CI/CD, esses pacotes compartilham arquivos e configurações comuns. Por exemplo, os pacotes podem compartilhar bibliotecas armazenadas em um local compartilhado ou as configurações e variáveis de computação podem ser definidas em um arquivo de configuração em um local compartilhado.
Este artigo fornece informações sobre como configurar dois pacotes para usar a configuração e os arquivos em uma pasta compartilhada. Exemplos de pacote compartilhado completos estão no repositório GitHub de exemplos de pacote.
Para conhecer mais práticas recomendadas para CI/CD e para desenvolvedores, consulte Fluxos de trabalho de CI/CD no Databricks e Práticas recomendadas para desenvolvedores no Databricks.
Estrutura do repositório
Uma prática comum e a recomendação do Databricks é armazenar a origem de muitos pacotes em um repositório com uma pasta compartilhada.
Uma estrutura de repositório de exemplo com mais de um pacote pode ser:
databricks-bundle-repo/
├── shared
│ ├── variables.yml # has variable definitions like cluster_id
│ └── shared_library.py # has shared code used in multiple bundles
├── job_bundle
│ ├── databricks.yml # uses ${var.cluster_id} defined in variables.yml
│ ├── resources/
│ │ └── job_bundle.job.yml
│ ├── src/
│ │ ├── notebook.ipynb
│ │ └── my_python.py # uses ../shared/shared_library.py
│ └── README.md
├── pipeline_bundle
│ ├── databricks.yml
│ ├── resources/
│ │ ├── pipeline_bundle.job.yml # uses ${var.cluster_id} defined in variables.yml
│ │ └── pipeline_bundle.pipeline.yml
│ ├── src/
│ │ └── my_pipeline.ipynb
│ └── README.md
Configuração para compartilhamento de arquivos
Para incluir arquivos de código fora de um pacote, especifique-os paths na chave do mapeamento de sincronização.
Por exemplo, dada uma shared pasta em um repositório (no mesmo nível que pastas de pacote) que contém:
um
shared_library.pyarquivo de código com o conteúdo:def multiply(a: int, b: int) -> int: return a * bum
variables.ymlcom o conteúdo:variables: cluster_id: default: 1234-567890-abcde123
Em seguida, uma configuração de pacote que usa o arquivo de código compartilhado e a variável de pacote definida na configuração compartilhada seria:
# databricks.yml
bundle:
name: job_bundle
sync:
paths:
- ../shared
- ./src
include:
- resources/*.yml
- ../shared/*.yml
targets:
dev:
mode: development
default: true
workspace:
host: https://my-workspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE
# job_bundle.yml
resources:
jobs:
my_python_job:
name: my_python_job
tasks:
- task_key: python_task
spark_python_task:
python_file: src/my_python.py # uses ../shared/shared_library.py
my_notebook_job:
name: my_notebook_job
tasks:
- task_key: notebook_task
existing_cluster_id: ${var.cluster_id} # defined in ../shared/variables.yml
notebook_task:
notebook_path: src/notebook.ipynb
# my_python.py
import os
import sys
# Traverse to the sync root path.
# Note: this requires :re[DBR] >= 14 or serverless.
shared_path = os.getcwd() + "/../../shared"
# Add the shared directory to the Python path.
sys.path.append(shared_path)
# Import a function from shared_library.py
from shared_library import multiply
# Use the function.
result = multiply(2, 3)
print(result)
Validação de pacotes
É importante sempre validar a configuração do pacote e, especialmente, se os pacotes compartilharem arquivos e configuração. O databricks bundle validate comando garante que variáveis, arquivos e caminhos especificados em seu pacote existam e sejam herdados e configurados corretamente e gera informações sobre problemas para que você possa corrigi-los antes da implantação. Confira a validação do pacote do Databricks.
Execute o seguinte comando para cada pacote antes de implantar:
databricks bundle validate
Permissões para pacotes compartilhados
Em uma organização, os pacotes geralmente são desenvolvidos, implantados e executados por diferentes indivíduos com diferentes responsabilidades e níveis de permissão. Todos os usuários podem precisar visualizar os pacotes; alguns precisam ser capazes de implantar alterações nos pacotes e executar recursos no espaço de trabalho de desenvolvimento de destino; um grupo seleto precisa ser capaz de implantar alterações nos pacotes e executar recursos em produção; e fluxos de trabalho automatizados que usam uma entidade de segurança de serviço precisam ser capazes de executar recursos em um pacote. Para garantir que seus pacotes compartilhados possam ser gerenciados efetivamente por todos os usuários em sua organização, defina permissões de nível superior, bem como permissões de destino de produção. Para obter informações sobre permissões de nível superior, que aplicam permissões a todos os recursos em um pacote, consulte permissões.
Dica
Os Pacotes de Automação Declarativa no workspace permitem uma colaboração fácil em pacotes. Consulte Colaborar em pacotes no workspace.
Por exemplo, o pacote databricks.yml compartilhado pode ser:
# databricks.yml
bundle:
name: shared_bundle
include:
- resources/*.yml
permissions:
- level: CAN_VIEW
group_name: all_users
- level: CAN_MANAGE
group_name: data_engineering_users
- level: CAN_RUN
service_principal_name: 123456-abcdef
targets:
dev:
mode: development
default: true
workspace:
host: https://my-workspace.cloud.databricks.com
prod:
mode: production
workspace:
host: https://my-workspace.cloud.databricks.com
root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
permissions:
- user_name: someone@example.com
level: CAN_MANAGE