Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Organisaties onderhouden vaak veel bundels en in deze meer geavanceerde CI/CD-scenario's delen deze bundels algemene configuratie en bestanden. Bundels kunnen bijvoorbeeld bibliotheken delen die zijn opgeslagen op een gedeelde locatie, of rekeninstellingen en variabelen kunnen worden gedefinieerd in een configuratiebestand op een gedeelde locatie.
Dit artikel bevat informatie over het configureren van twee bundels voor het gebruik van configuratie en bestanden in een gedeelde map. Volledige voorbeelden van gedeelde bundels bevinden zich in de GitHub-opslagplaats met bundelvoorbeelden.
Raadpleeg voor aanvullende best practices voor CI/CD en ontwikkelaars CI/CD-workflows op Databricks en Best practices voor ontwikkelaars op Databricks.
Structuur van opslagplaats
Een veelvoorkomende procedure en de aanbeveling van Databricks is het opslaan van bron voor veel bundels in één opslagplaats met een gedeelde map.
Een voorbeeld van een opslagplaatsstructuur met meer dan één bundel kan zijn:
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
Configuratie voor het delen van bestanden
Als u codebestanden buiten een bundel wilt opnemen, geeft u deze op in de paths sleutel van de synchronisatietoewijzing.
Als u bijvoorbeeld een shared map in een opslagplaats (op hetzelfde niveau als bundelmappen) hebt die het volgende bevat:
een
shared_library.pycodebestand met de inhoud:def multiply(a: int, b: int) -> int: return a * ba
variables.ymlmet de inhoud:variables: cluster_id: default: 1234-567890-abcde123
Vervolgens is een bundelconfiguratie die gebruikmaakt van het gedeelde codebestand en de bundelvariabele die is gedefinieerd in de gedeelde configuratie:
# 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)
Bundelvalidatie
Het is belangrijk om altijd uw bundelconfiguratie te valideren, en vooral als uw bundels bestanden en configuratie delen. De databricks bundle validate opdracht zorgt ervoor dat variabelen, bestanden en paden die in uw bundel zijn opgegeven, bestaan en correct worden overgenomen en geconfigureerd, en voert informatie uit over problemen, zodat u deze kunt corrigeren voordat u implementeert. Zie databricks-bundel valideren.
Voer de volgende opdracht uit voor elke bundel voordat u implementeert:
databricks bundle validate
Machtigingen voor gedeelde bundels
Binnen een organisatie worden bundels vaak ontwikkeld, geïmplementeerd en uitgevoerd door verschillende personen met verschillende verantwoordelijkheden en machtigingsniveaus. Mogelijk moeten alle gebruikers de bundels kunnen bekijken, sommigen moeten bundelwijzigingen kunnen implementeren en resources kunnen uitvoeren in de doelwerkruimte voor ontwikkeling, een selectie moet bundelwijzigingen kunnen implementeren en resources kunnen uitvoeren in productie, en geautomatiseerde werkstromen die gebruikmaken van een service-principal, resources in een bundel kunnen uitvoeren. Om ervoor te zorgen dat uw gedeelde bundels effectief kunnen worden beheerd door alle gebruikers in uw organisatie, stelt u machtigingen op het hoogste niveau en machtigingen voor productiedoel in. Zie machtigingen voor meer informatie over machtigingen op het hoogste niveau, die machtigingen toepassen op alle resources in een bundel.
Aanbeveling
Met declaratieve Automation-bundels in de werkruimte kunt u eenvoudig samenwerken aan bundels. Zie Samenwerken aan bundels in de werkruimte.
Het databricks.yml voor een gedeelde bundel kan bijvoorbeeld het volgende zijn:
# 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