Partilhar via


Recursos do Databricks Asset Bundles

O Databricks Asset Bundles permite especificar informações sobre os recursos do Azure Databricks usados pelo pacote no mapeamento de resources na configuração do pacote. Consulte de mapeamento de recursos e de referência de chave de recursos.

Este artigo descreve os tipos de recursos suportados para pacotes e fornece detalhes e um exemplo para cada tipo suportado. Para obter exemplos adicionais, consulte Exemplos de configuração do pacote.

Dica

Para gerar YAML para qualquer recurso existente, use o comando databricks bundle generate. Consulte Gerar um arquivo de configuração de pacote.

Recursos suportados

A tabela a seguir lista os tipos de recursos suportados para pacotes. Alguns recursos podem ser criados definindo-os em um pacote e implantando o pacote, e alguns recursos suportam apenas a referência a um recurso existente para incluir no pacote.

Os recursos são definidos usando a correspondente Databricks REST API a carga útil create operation request do objeto, onde os campos suportados do objeto, expressos como YAML, são as propriedades suportadas do recurso. Os links para a documentação das cargas úteis correspondentes de cada recurso estão listados na tabela.

Dica

O comando databricks bundle validate retorna avisos se propriedades de recursos desconhecidas forem encontradas nos arquivos de configuração do pacote.

Recurso Criar suporte Objeto REST API correspondente
app Objeto de App
cluster objeto Cluster
painel objeto Dashboard
experiência Objeto de experimento
emprego objeto de trabalho
modelo (legado) Objeto de Modelo (legado)
ponto_final_de_serviço_de_modelo Modelo que serve o objeto de ponto de extremidade
fluxo de trabalho [Objeto de pipeline](https://docs.databricks.com/api/azure/workspace/pipelines/create)
quality_monitor objeto do monitor de qualidade
registered_model (Catálogo Unity) Objeto de modelo registrado
esquema (Catálogo Unity) Schema objeto
volume (Catálogo Unity) objeto Volume

aplicativo

O recurso do aplicativo define um aplicativo Databricks. Para obter informações sobre Databricks Apps, consulte O que é Databricks Apps?.

Dica

Você pode inicializar um pacote com um aplicativo Streamlit Databricks usando o seguinte comando:

databricks bundle init https://github.com/databricks/bundle-examples --template-dir contrib/templates/streamlit-app

Para adicionar um aplicativo, especifique os campos de objeto que definem o aplicativo, bem como o seguinte:

  • source_code_path - O caminho local ./app do código-fonte do aplicativo Databricks. Este campo é obrigatório.
  • config - Os comandos de configuração do aplicativo e as variáveis de ambiente. Você pode usar isso para especificar diferentes destinos de implantação de aplicativos.

Exemplo

O exemplo a seguir cria um aplicativo chamado my_app que gerencia um trabalho criado pelo pacote:

resources:
  jobs:
    # Define a job in the bundle
    hello_world:
      name: hello_world
      tasks:
        - task_key: task
          spark_python_task:
            python_file: ../src/main.py
          environment_key: default

      environments:
        - environment_key: default
          spec:
            client: "1"

  # Define an app that manages the job in the bundle
  apps:
    job_manager:
      name: "job_manager_app"
      description: "An app which manages a job created by this bundle"

      # The location of the source code for the app
      source_code_path: ../src/app

      # The configuration for running the app
      config:
        command:
          - flask
          - --app
          - app
          - run
          - --debug
        env:
          - name: JOB_ID
            value: ${resources.jobs.hello_world.id}

      # The resources in the bundle which this app has access to. This binds the resource in the app with the DABs resource.
      resources:
        - name: "app-job"
          job:
            id: ${resources.jobs.hello_world.id}
            permission: "CAN_MANAGE_RUN"

Para obter o pacote de exemplo completo do aplicativo Databricks, consulte o repositório GitHub de exemplos de pacotes .

aglomeração

O recurso de cluster define um cluster versátil.

Exemplo

O exemplo a seguir cria um cluster chamado my_cluster e o define como o cluster a ser usado para executar o bloco de anotações no my_job:

bundle:
  name: clusters

resources:
  clusters:
    my_cluster:
      num_workers: 2
      node_type_id: "i3.xlarge"
      autoscale:
        min_workers: 2
        max_workers: 7
      spark_version: "13.3.x-scala2.12"
      spark_conf:
        "spark.executor.memory": "2g"

  jobs:
    my_job:
      tasks:
        - task_key: test_task
          notebook_task:
            notebook_path: "./src/my_notebook.py"

Painel de instrumentos

O recurso de painel permite que você gerencie painéis de IA/BI em um pacote. Para obter informações sobre painéis de IA/BI, consulte Dashboards.

Exemplo

O exemplo a seguir inclui e implanta o exemplo painel do NYC Taxi Trip Analysis no espaço de trabalho Databricks.

resources:
  dashboards:
    nyc_taxi_trip_analysis:
      display_name: "NYC Taxi Trip Analysis"
      file_path: ../src/nyc_taxi_trip_analysis.lvdash.json
      warehouse_id: ${var.warehouse_id}

Se você usar a interface do usuário para modificar o painel, as modificações feitas por meio da interface do usuário não serão aplicadas ao arquivo JSON do painel no pacote local, a menos que você o atualize explicitamente usando bundle generate. Você pode usar a opção --watch para pesquisar continuamente e recuperar alterações no painel. Consulte Gerar um arquivo de configuração de pacote.

Além disso, se você tentar implantar um pacote que contenha um arquivo JSON de painel diferente daquele no espaço de trabalho remoto, ocorrerá um erro. Para forçar a implantação e substituir o dashboard no espaço de trabalho remoto pelo painel local, use a opção --force. Consulte para implantar um pacote.

Experimento

O recurso de experimento permite definir experimentos MLflow em um pacote. Para obter informações sobre experimentos MLflow, consulte Organizar execuções de treinamento com experimentos MLflow.

Exemplo

O exemplo a seguir define um experimento que todos os usuários podem exibir:

resources:
  experiments:
    experiment:
      name: my_ml_experiment
      permissions:
        - level: CAN_READ
          group_name: users
      description: MLflow experiment used to track runs

emprego

O recurso de trabalho permite que você defina trabalhos e suas tarefas correspondentes em seu pacote. Para informações sobre empregos, consulte Visão geral da orquestração no Databricks. Para obter um tutorial que usa um modelo Databricks Asset Bundles para criar um trabalho, consulte Desenvolver um trabalho no Azure Databricks usando Databricks Asset Bundles.

Exemplo

O exemplo a seguir define um trabalho com a chave de recurso hello-job com uma tarefa de bloco de anotações:

resources:
  jobs:
    hello-job:
      name: hello-job
      tasks:
        - task_key: hello-task
          notebook_task:
            notebook_path: ./hello.py

Para obter informações sobre como definir tarefas de trabalho e substituir configurações de trabalho, consulte Adicionar tarefas a trabalhos no Databricks Asset Bundles, Substituir configurações de tarefas de trabalho no Databricks Asset Bundlese Substituir configurações de cluster em Databricks Asset Bundles.

modelo (legado)

O recurso de modelo permite definir modelos herdados em pacotes. Em vez disso, a Databricks recomenda que se use modelos registados do Unity Catalog .

model_serving_endpoint

O recurso model_serving_endpoint permite definir modelo que serve pontos de extremidade. Consulte Gerenciar modelo servindo pontos de extremidade.

Exemplo

O exemplo a seguir define um modelo de Catálogo Unity servindo ponto de extremidade:

resources:
  model_serving_endpoints:
    uc_model_serving_endpoint:
      name: "uc-model-endpoint"
      config:
        served_entities:
        - entity_name: "myCatalog.mySchema.my-ads-model"
          entity_version: "10"
          workload_size: "Small"
          scale_to_zero_enabled: "true"
        traffic_config:
          routes:
          - served_model_name: "my-ads-model-10"
            traffic_percentage: "100"
      tags:
      - key: "team"
        value: "data science"

quality_monitor (Catálogo Unity)

O recurso quality_monitor permite definir um monitor de tabelas do Unity Catalog . Para obter informações sobre monitores, consulte Qualidade do modelo do monitor e saúde do ponto de extremidade.

Exemplo

O exemplo a seguir define um monitor de qualidade:

resources:
  quality_monitors:
    my_quality_monitor:
      table_name: dev.mlops_schema.predictions
      output_schema_name: ${bundle.target}.mlops_schema
      assets_dir: /Users/${workspace.current_user.userName}/databricks_lakehouse_monitoring
      inference_log:
        granularities: [1 day]
        model_id_col: model_id
        prediction_col: prediction
        label_col: price
        problem_type: PROBLEM_TYPE_REGRESSION
        timestamp_col: timestamp
      schedule:
        quartz_cron_expression: 0 0 8 * * ? # Run Every day at 8am
        timezone_id: UTC

registered_model (Catálogo Unity)

O recurso de modelo registrado permite definir modelos no Unity Catalog. Para obter informações sobre o Catálogo Unity modelos registados, consulte Gerir o ciclo de vida do modelo no Catálogo Unity.

Exemplo

O exemplo a seguir define um modelo registrado no Unity Catalog:

resources:
  registered_models:
      model:
        name: my_model
        catalog_name: ${bundle.target}
        schema_name: mlops_schema
        comment: Registered model in Unity Catalog for ${bundle.target} deployment target
        grants:
          - privileges:
              - EXECUTE
            principal: account users

gasoduto

O recurso de pipeline permite que você crie Delta Live Tables pipelines. Para obter informações sobre pipelines, consulte O que é Delta Live Tables?. Para obter um tutorial que usa o modelo Databricks Asset Bundles para criar um pipeline, consulte Develop Delta Live Tables pipelines with Databricks Asset Bundles.

Exemplo

O exemplo a seguir define um pipeline com a chave de recurso hello-pipeline:

resources:
  pipelines:
    hello-pipeline:
      name: hello-pipeline
      clusters:
        - label: default
          num_workers: 1
      development: true
      continuous: false
      channel: CURRENT
      edition: CORE
      photon: false
      libraries:
        - notebook:
            path: ./pipeline.py

esquema (Unity Catalog)

O tipo de recurso de esquema permite que você defina o Catálogo Unity esquemas para tabelas e outros ativos em seus fluxos de trabalho e pipelines criados como parte de um pacote. Um esquema, diferente de outros tipos de recursos, tem as seguintes limitações:

  • O proprietário de um recurso de esquema é sempre o usuário de implantação e não pode ser alterado. Se run_as for especificado no pacote, será ignorado nas operações sobre o esquema.
  • Only fields supported by the corresponding Schemas object on the create API are available for the schema resource. Somente os campos suportados pelo objeto correspondente Schemas na API de criação estão disponíveis para o recurso de esquema. Por exemplo, enable_predictive_optimization não é suportado, pois só está disponível na API de atualização .

Exemplos

O exemplo a seguir define um pipeline com a chave de recurso my_pipeline que cria um esquema Unity Catalog com a chave my_schema como destino:

resources:
  pipelines:
    my_pipeline:
      name: test-pipeline-{{.unique_id}}
      libraries:
        - notebook:
            path: ./nb.sql
      development: true
      catalog: main
      target: ${resources.schemas.my_schema.id}

  schemas:
    my_schema:
      name: test-schema-{{.unique_id}}
      catalog_name: main
      comment: This schema was created by DABs.

Um mapeamento de concessões de nível superior não é suportado pelo Databricks Asset Bundles, portanto, se você quiser definir concessões para um esquema, defina as concessões para o esquema dentro do mapeamento schemas. Para obter mais informações sobre subsídios, consulte Mostrar, conceder e revogar privilégios.

O exemplo a seguir define um esquema Unity Catalog com concessões:

resources:
  schemas:
    my_schema:
      name: test-schema
      grants:
        - principal: users
          privileges:
            - SELECT
        - principal: my_team
          privileges:
            - CAN_MANAGE
      catalog_name: main

volume (Catálogo Unity)

O tipo de recurso de volume permite definir e criar o Unity Catalog volumes como parte de um pacote. Ao implantar um pacote com um volume definido, observe que:

  • Um volume não pode ser referenciado no artifact_path do pacote até que ele exista no espaço de trabalho. Portanto, se você quiser usar o Databricks Asset Bundles para criar o volume, você deve primeiro definir o volume no pacote, implantá-lo para criar o volume e, em seguida, fazer referência a ele no artifact_path em implantações subsequentes.
  • Os volumes no pacote não são precedidos com o prefixo dev_${workspace.current_user.short_name} quando o destino de implantação tem mode: development configurado. No entanto, você pode configurar manualmente esse prefixo. Consulte Predefinições personalizadas.

Exemplo

O exemplo a seguir cria um volume Unity Catalog com a chave my_volume:

resources:
  volumes:
    my_volume:
      catalog_name: main
      name: my_volume
      schema_name: my_schema

Para obter um exemplo de pacote que execute um trabalho que grava num ficheiro no volume do Catálogo Unity, consulte o repositório GitHub exemplos de pacote .