Partager via


Configuration de pack de ressources Databricks

Cet article décrit la syntaxe des fichiers de configuration Databricks Asset Bundle, qui définissent les bundles de ressources Databricks. Consultez Que sont les packs de ressources Databricks ?.

Pour créer et utiliser des bundles, consultez Développer des bundles de ressources Databricks.

Pour obtenir des informations de référence sur la configuration de l’offre groupée, consultez La référence de configuration.

databricks.yml

Un bundle doit contenir un fichier de configuration (et un seul) nommé databricks.yml à la racine du dossier du projet groupé. databricks.yml est le fichier de configuration principal qui définit un bundle, mais il peut référencer d’autres fichiers de configuration, tels que les fichiers de configuration de ressources, dans le include mappage. La configuration de bundle est exprimée dans YAML. Pour plus d’informations sur YAML, consultez la spécification YAML officielle.

Le plus simple databricks.yml définit le nom de l’offre groupée, qui est un mappage de niveau supérieur requis et un déploiement cible.

bundle:
  name: my_bundle

targets:
  dev:
    default: true

Pour plus d’informations sur tous les mappages de niveau supérieur, consultez la référence de configuration.

Conseil

La prise en charge de Python pour les bundles de ressources Databricks vous permet de définir des ressources dans Python. Consultez la configuration de bundle dans Python.

Caractéristique

La spécification YAML suivante fournit des clés de configuration de niveau supérieur pour les bundles de ressources Databricks. Pour obtenir des informations de référence complètes sur la configuration, consultez les ressources De référence de configuration et Databricks Asset Bundles.

# This is the default bundle configuration if not otherwise overridden in
# the "targets" top-level mapping.
bundle: # Required.
  name: string # Required.
  databricks_cli_version: string
  cluster_id: string
  deployment: Map
  git:
    origin_url: string
    branch: string

# This is the identity to use to run the bundle
run_as:
  - user_name: <user-name>
  - service_principal_name: <service-principal-name>

# These are any additional configuration files to include.
include:
  - '<some-file-or-path-glob-to-include>'
  - '<another-file-or-path-glob-to-include>'

# These are any scripts that can be run.
scripts:
  <some-unique-script-name>:
    content: string

# These are any additional files or paths to include or exclude.
sync:
  include:
    - '<some-file-or-path-glob-to-include>'
    - '<another-file-or-path-glob-to-include>'
  exclude:
    - '<some-file-or-path-glob-to-exclude>'
    - '<another-file-or-path-glob-to-exclude>'
  paths:
    - '<some-file-or-path-to-synchronize>'

# These are the default artifact settings if not otherwise overridden in
# the targets top-level mapping.
artifacts:
  <some-unique-artifact-identifier>:
    build: string
    dynamic_version: boolean
    executable: string
    files:
      - source: string
    path: string
    type: string

# These are for any custom variables for use throughout the bundle.
variables:
  <some-unique-variable-name>:
    description: string
    default: string or complex
    lookup: Map
    type: string # The only valid value is "complex" if the variable is a complex variable, otherwise do not define this key.

# These are the workspace settings if not otherwise overridden in
# the targets top-level mapping.
workspace:
  artifact_path: string
  host: string
  profile: string
  resource_path: string
  root_path: string
  state_path: string

# These are the permissions to apply to resources defined
# in the resources mapping.
permissions:
  - level: <permission-level>
    group_name: <unique-group-name>
  - level: <permission-level>
    user_name: <unique-user-name>
  - level: <permission-level>
    service_principal_name: <unique-principal-name>

# These are the resource settings if not otherwise overridden in
# the targets top-level mapping.
resources:
  alerts:
    <unique-alert-name>:
      # alert settings
  apps:
    <unique-app-name>:
      # app settings
  catalogs:
    <unique-catalog-name>:
      # catalog settings
  clusters:
    <unique-cluster-name>:
      # cluster settings
  dashboards:
    <unique-dashboard-name>:
      # dashboard settings
  database_catalogs:
    <unique-database-catalog-name>:
      # database catalog settings
  database_instances:
    <unique-database-instance-name>:
      # database instance settings
  experiments:
    <unique-experiment-name>:
      # experiment settings
  jobs:
    <unique-job-name>:
      # job settings
  model_serving_endpoints:
    <unique-model-serving-endpoint-name>:
    # model_serving_endpoint settings
  pipelines:
    <unique-pipeline-name>:
      # pipeline settings
  postgres_branches:
    <unique-postgres-branch-name>:
      # postgres branch settings
  postgres_endpoints:
    <unique-postgres-endpoint-name>:
      # postgres endpoint settings
  postgres_projects:
    <unique-postgres-project-name>:
      # postgres project settings
  quality_monitors:
    <unique-quality-monitor-name>:
    # quality monitor settings
  registered_models:
    <unique-registered-model-name>:
    # registered model settings
  schemas:
    <unique-schema-name>:
      # schema settings
  secret_scopes:
    <unique-secret-scope-name>:
      # secret scopes settings
  sql_warehouses:
    <unique-sql-warehouse-name>:
      # sql warehouse settings
  synced_database_tables:
    <unique-synced-database-table-name>:
      # synced database table settings
  volumes:
    <unique-volume-name>:
    # volumes settings

# These are the targets to use for deployments and workflow runs. One and only one of these
# targets can be set to "default: true".
targets:
  <some-unique-programmatic-identifier-for-this-target>:
    artifacts:
      # artifact build settings for this target
    bundle:
      # bundle settings for this target
    default: boolean
    git: Map
    mode: string
    permissions:
      # permissions for this target
    presets:
      <preset>: <value>
    resources:
      # resource settings for this target
    sync:
      # sync settings for this target
    variables:
      <defined-variable-name>: <non-default-value> # value for this target
    workspace:
      # workspace settings for this target
    run_as:
      # run_as settings for this target

Exemples

Cette section contient quelques exemples de base pour vous aider à comprendre le fonctionnement des bundles et la structure de la configuration.

Remarque

Pour obtenir des exemples de configuration illustrant les fonctionnalités d’un pack et les cas d’utilisation courants d’un pack, consultez Exemples de configuration de pack et le référentiel d’exemples de packs dans GitHub.

L’exemple de configuration de bundle suivant spécifie un fichier local nommé hello.py qui se trouve dans le même répertoire que le fichier databricks.ymlde configuration de bundle. Il exécute ce notebook en tant que travail à l’aide du cluster distant avec l’ID de cluster spécifié. L’URL de l’espace de travail distant et les informations d’identification d’authentification de l’espace de travail sont lues à partir du profil de configuration local de l’appelant nommé DEFAULT.

bundle:
  name: hello-bundle

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          existing_cluster_id: 1234-567890-abcde123
          notebook_task:
            notebook_path: ./hello.py

targets:
  dev:
    default: true

L’exemple suivant ajoute une cible portant le nom prod qui utilise une autre URL d’espace de travail distante et des informations d’identification d’authentification de l’espace de travail, qui sont lues à partir de l’entrée correspondante .databrickscfg du fichier de host l’appelant avec l’URL de l’espace de travail spécifiée. Ce travail exécute le même notebook, mais utilise un cluster distant différent avec l’ID de cluster spécifié.

Remarque

Databricks recommande d’utiliser le mappage host au lieu du mappage default dans la mesure du possible, car cela facilite le portage de vos fichiers de configuration de pack. La configuration du mappage host indique à l’interface CLI Databricks de rechercher un profil qui correspond dans votre fichier .databrickscfg, puis d’utiliser les champs du profil pour déterminer le type d’authentification Databricks à utiliser. Si plusieurs profils avec un champ correspondant host existent, vous devez utiliser l’option --profile sur les commandes groupées pour spécifier un profil à utiliser.

Il convient de noter que vous n’avez pas besoin de déclarer le mappage notebook_task dans le mappage prod, car il revient à utiliser le mappage notebook_task dans le mappage resources de niveau supérieur, si le mappage notebook_task n’est pas explicitement remplacé dans le mappage prod.

bundle:
  name: hello-bundle

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          existing_cluster_id: 1234-567890-abcde123
          notebook_task:
            notebook_path: ./hello.py

targets:
  dev:
    default: true
  prod:
    workspace:
      host: https://<production-workspace-url>
    resources:
      jobs:
        hello-job:
          name: hello-job
          tasks:
            - task_key: hello-task
              existing_cluster_id: 2345-678901-fabcd456

Utilisez les commandes groupées suivantes pour valider, déployer et exécuter ce travail dans la dev cible. Pour plus d’informations sur le cycle de vie d’un bundle, consultez Développer des bundles de ressources Databricks.

# Because the "dev" target is set to "default: true",
# you do not need to specify "-t dev":
databricks bundle validate
databricks bundle deploy
databricks bundle run hello_job

# But you can still explicitly specify it, if you want or need to:
databricks bundle validate
databricks bundle deploy -t dev
databricks bundle run -t dev hello_job

Pour valider, déployer et exécuter ce travail dans la cible prod à la place :

# You must specify "-t prod", because the "dev" target
# is already set to "default: true":
databricks bundle validate
databricks bundle deploy -t prod
databricks bundle run -t prod hello_job

Pour une plus grande modularisation et une meilleure réutilisation des définitions et des paramètres entre les offres groupées, fractionnez votre configuration de bundle en fichiers distincts :

# databricks.yml

bundle:
  name: hello-bundle

include:
  - '*.yml'
# hello-job.yml

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          existing_cluster_id: 1234-567890-abcde123
          notebook_task:
            notebook_path: ./hello.py
# targets.yml

targets:
  dev:
    default: true
  prod:
    workspace:
      host: https://<production-workspace-url>
    resources:
      jobs:
        hello-job:
          name: hello-job
          tasks:
            - task_key: hello-task
              existing_cluster_id: 2345-678901-fabcd456

Ressources supplémentaires