Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As organizações geralmente mantêm muitos pacotes e, nesses cenários de CI/CD mais avançados, esses pacotes compartilham configurações e arquivos comuns. Por exemplo, pacotes podem compartilhar bibliotecas armazenadas em um local compartilhado ou 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 completos de pacotes compartilhados estão no repositório GitHub de exemplos de pacotes.
Para melhores práticas adicionais de CI/CD e programadores, consulte fluxos de trabalho CI/CD em Databricks e melhores práticas para programadores em Databricks.
Estrutura do repositório
Uma prática comum, e recomendação da Databricks, é armazenar o código-fonte de vários bundles num único repositório com uma pasta partilhada.
Um exemplo de estrutura de repositório 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 das pastas de pacote) que contém:
Um ficheiro de código
shared_library.pycom o seguinte conteúdo:def multiply(a: int, b: int) -> int: return a * ba
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 do pacote
É importante sempre validar a configuração do pacote, 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 adequadamente herdados e configurados, e gera informações sobre problemas para que você possa corrigi-los antes de implantá-los. Consulte databricks bundle validate.
Execute o seguinte comando para cada pacote antes de implantar:
databricks bundle validate
Permissões para pacotes compartilhados
Dentro de 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 ser capazes de visualizar os pacotes, alguns precisam ser capazes de implantar alterações de pacote e executar recursos no espaço de trabalho de desenvolvimento de destino, alguns poucos precisam ser capazes de implantar alterações de pacote e executar recursos em produção, e fluxos de trabalho automatizados que usam uma entidade de serviço precisam ser capazes de executar recursos em um pacote. Para garantir que seus pacotes compartilhados possam ser gerenciados de forma eficaz 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 de um pacote, consulte permissões.
Sugestão
Os Pacotes de Automação Declarativa no espaço de trabalho permitem a colaboração fácil em pacotes. Veja Colaborar em pacotes no espaço de trabalho.
Por exemplo, o databricks.yml para um pacote 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