Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Organisationer underhåller ofta många paket, och i dessa mer avancerade CI/CD-scenarier delar dessa paket gemensam konfiguration och filer. Paket kan till exempel dela bibliotek som lagras på en delad plats, eller så kan beräkningsinställningar och variabler definieras i en konfigurationsfil på en delad plats.
Den här artikeln innehåller information om hur du konfigurerar två paket för att använda konfiguration och filer i en delad mapp. Fullständiga exempel på delat paket finns på GitHub-lagringsplatsen bundle-examples.
Mer metodtips för CI/CD och utvecklare finns i CI/CD-arbetsflöden på Databricks och Metodtips för utvecklare på Databricks.
Lagringsplatsstruktur
En vanlig metod och Databricks rekommendation är att lagra källan för många paket på en lagringsplats med en delad mapp.
Ett exempel på en lagringsplatsstruktur med fler än ett paket kan vara:
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
Konfiguration för fildelning
Om du vill inkludera kodfiler utanför ett paket anger du dem i paths nyckeln för synkroniseringsmappningen.
Till exempel med en shared mapp på en lagringsplats (på samma nivå som paketmappar) som innehåller:
en
shared_library.pykodfil med innehållet:def multiply(a: int, b: int) -> int: return a * ben
variables.ymlmed innehållet:variables: cluster_id: default: 1234-567890-abcde123
Sedan skulle en paketkonfiguration som använder den delade kodfilen och paketvariabeln som definierats i den delade konfigurationen vara:
# 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)
Paketverifiering
Det är viktigt att alltid verifiera paketkonfigurationen, särskilt om paketen delar filer och konfiguration. Kommandot databricks bundle validate ser till att variabler, filer och sökvägar som anges i ditt paket finns och ärvs och konfigureras korrekt och matar ut information om problem så att du kan korrigera dem innan du distribuerar dem. Se verifiera databricks-paket.
Kör följande kommando för varje paket innan du distribuerar:
databricks bundle validate
Behörigheter för delade paket
I en organisation utvecklas, distribueras och körs paket ofta av olika personer med olika ansvarsområden och behörighetsnivåer. Alla användare kan behöva kunna visa paketen, vissa måste kunna distribuera paketändringar och köra resurser på målutvecklingsarbetsytan, några få måste kunna distribuera paketändringar och köra resurser i produktion och automatiserade arbetsflöden som använder tjänstens huvudnamn måste kunna köra resurser i ett paket. För att säkerställa att dina delade paket kan hanteras effektivt av alla användare i din organisation anger du behörigheter på toppnivå samt produktionsmålbehörigheter. Information om behörigheter på den översta nivån, som tillämpar behörigheter för alla resurser i ett paket, finns i behörigheter.
Tips/Råd
Deklarativa automationspaket i arbetsytan möjliggör enkelt samarbete med paket. Se Samarbeta om paket på arbetsytan.
Till exempel databricks.yml kan för ett delat paket vara:
# 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