Sdílet prostřednictvím


Prostředky Databricks Asset Bundles

Databricks Asset Bundles umožňují specifikovat informace o prostředcích Azure Databricks používaných balíčkem v mapování resources v konfiguraci Asset Bundles. Prohlédněte si mapování prostředků a referenční klíč k prostředkům .

Tento článek popisuje podporované typy prostředků pro sady a obsahuje podrobnosti a příklad pro každý podporovaný typ. Další příklady najdete v tématu Příklady konfigurace sady.

Rada

Pokud chcete vygenerovat YAML pro jakýkoli existující prostředek, použijte příkaz databricks bundle generate. Viz Vygenerování konfiguračního souboru sady.

podporované prostředky

Následující tabulka uvádí podporované typy prostředků pro sady. Některé prostředky je možné vytvořit tak, že je definujete v sadě a nasadíte sadu a některé prostředky podporují odkazování pouze na existující prostředek, který se má zahrnout do sady.

Prostředky jsou definovány pomocí odpovídající Databricks REST API žádosti o vytvoření objektu, kde podporovaná pole objektu jsou vlastnosti prostředku vyjádřené ve formátu YAML. Odkazy na dokumentaci pro payloady jednotlivých prostředků jsou uvedeny v tabulce.

Rada

Příkaz databricks bundle validate vrátí upozornění, pokud se v konfiguračních souborech sady nacházejí neznámé vlastnosti prostředku.

Zdroj Vytvořit podporu Odpovídající objekt rozhraní REST API
aplikace Objekt aplikace
clusteru objekt clusteru
řídicí panel objekt řídicího panelu
experiment Experimentální objekt
úlohy objekt úlohy
model (starší verze) Model (starší verze) objekt
koncový bod pro poskytování modelu model obsluhující objekt koncového bodu
kanálu [Objekt potrubí]](https://docs.databricks.com/api/azure/workspace/pipelines/create)
quality_monitor Objekt pro monitorování kvality
registrovaný_model (Unity Catalog) Zaregistrovaný modelový objekt
schématu (katalog Unity) objekt schématu
svazku (katalog Unity) objekt svazku

aplikace

Prostředek aplikace definuje aplikaci Databricks s . Informace o aplikacích Databricks najdete v tématu Co je Databricks Apps?.

Rada

Sadu můžete inicializovat pomocí aplikace Streamlit Databricks pomocí následujícího příkazu:

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

Pokud chcete přidat aplikaci, zadejte pole objektu definující aplikaci a také následující:

  • source_code_path – místní cesta ./app zdrojového kódu aplikace Databricks. Toto pole je povinné.
  • config – příkazy konfigurace aplikace a proměnné prostředí. Můžete ho použít k určení různých cílů nasazení aplikací.

Příklad

Následující příklad vytvoří aplikaci s názvem my_app, která spravuje úlohu vytvořenou balíčkem:

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"

Kompletní sadu ukázek aplikace Databricks najdete v příklady úložiště GitHub.

shluk

Prostředek clusteru definuje univerzální cluster.

Příklad

Následující příklad vytvoří cluster s názvem my_cluster a nastaví ho jako cluster pro spuštění poznámkového bloku v 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"

palubní deska

Prostředek řídicího panelu umožňuje spravovat řídicí panely AI/BI v sadě. Informace o řídicích panelech naleznete v Dashboards.

Příklad

Následující příklad zahrnuje a nasazuje ukázkový dashboard NYC Taxi Trip Analysis do pracovního prostoru 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}

Pokud k úpravě řídicího panelu použijete uživatelské rozhraní, nebudou změny provedené prostřednictvím uživatelského rozhraní použity na soubor JSON řídicího panelu v místní sadě, pokud ho explicitně neaktualizujete pomocí bundle generate. Pomocí možnosti --watch můžete průběžně dotazovat a načítat změny na dashboardu. Viz Vygenerování konfiguračního souboru sady.

Pokud se navíc pokusíte nasadit sadu obsahující soubor JSON řídicího panelu, který se liší od souboru JSON ve vzdáleném pracovním prostoru, dojde k chybě. Pokud chcete vynutit nasazení a přepsání řídicího panelu ve vzdáleném pracovním prostoru místním pracovním prostorem, použijte možnost --force. Viz Nasazení sady.

experiment

Prostředek experimentu umožňuje definovat experimenty MLflow v balíčku. Informace o experimentech MLflow najdete v tématu Uspořádání trénovacích běhů pomocí experimentů MLflow.

Příklad

Následující příklad definuje experiment, který můžou zobrazit všichni uživatelé:

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

práce

Zdroje pro úlohy vám umožňují definovat úlohy a jejich příslušné úkoly ve vašem balíčku. Informace o úlohách najdete v tématu Přehled orchestrace na Databricks. Kurz, který k vytvoření úlohy používá šablonu Sady prostředků Databricks, najdete v tématu Vývoj úlohy v Azure Databricks pomocí sad prostředků Databricks.

Příklad

Následující příklad definuje úlohu s klíčem zdroje hello-job s jedním úkolem poznámkového bloku:

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

Informace o definování úloh a přepsání nastavení úloh naleznete v tématu Přidání úkolů do úloh v sadách prostředků Databricks, Přepsání nastavení úloh v sadě prostředků Databricksa Přepsání nastavení clusteru v sadě prostředků Databricks.

model (starší verze)

Modelový zdroj umožňuje definovat starší modely v balíčcích. Databricks doporučuje místo toho používat modely registrované v katalogu Unity .

koncový bod pro obsluhu modelu

Prostředek model_serving_endpoint umožňuje definovat model obsluhující koncové body. Viz Správa modelů obsluhujících koncové body.

Příklad

Následující příklad definuje koncový bod obsluhující model katalogu Unity:

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"

monitor kvality (katalog Unity)

Prostředek quality_monitor umožňuje definovat monitortabulek katalogu Unity . Informace o monitorování najdete v tématu Monitorování kvality modelu a stavu koncového bodu.

Příklad

Následující příklad definuje monitorování kvality:

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 (Unity Catalog)

Registrovaný prostředek modelu umožňuje definovat modely v katalogu Unity. Informace o registrovaných modelech v Unity Catalognaleznete v Katalogu Unity v tématu Správa životního cyklu modelu.

Příklad

Následující příklad definuje registrovaný model v Katalogu Unity:

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

potrubí

Zdroj kanálu vám umožňuje vytvářet Delta Live Tables kanály. Informace o kanálech najdete v tématu Co jsou dynamické tabulky Delta?. Kurz, který používá šablonu Databricks Asset Bundles k vytvoření datového toku, najdete v části Vývoj datových toků Delta Live Tables pomocí Databricks Asset Bundles.

Příklad

Následující příklad definuje pipeline s klíčem prostředku 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

schéma (katalog Unity)

Typ prostředku schématu umožňuje definovat schémata katalogu Unity pro tabulky a další zdroje ve vašich pracovních postupech a pipelinech vytvořených jako součást balíčku. Schéma, které se liší od jiných typů prostředků, má následující omezení:

  • Vlastníkem prostředku schématu je vždy uživatel, který provádí nasazení, a nelze jej změnit. Pokud je v balíčku zadán run_as, bude operacemi ve schématu ignorován.
  • Pro prostředek schématu jsou k dispozici pouze pole podporovaná odpovídajícím objektem schémat v rámci rozhraní API pro vytváření. Například enable_predictive_optimization se nepodporuje, protože je k dispozici pouze v rozhraní API aktualizace.

Příklady

Následující příklad definuje kanál s klíčem prostředku my_pipeline, který vytvoří schéma katalogu Unity s klíčem my_schema jako cíl:

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.

Sady prostředků Databricks nepodporují mapování grantů nejvyšší úrovně, takže pokud chcete nastavit granty pro schéma, definujte granty pro schéma v rámci mapování schemas. Další informace o grantech naleznete v tématu Zobrazit, udělit a odvolat oprávnění.

Následující příklad definuje schéma katalogu Unity s granty:

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

svazek (Unity Catalog)

Typ prostředku svazku umožňuje definovat a vytvářet svazky katalogu Unity jako součást sady. Při nasazování sady s definovaným svazkem mějte na paměti, že:

  • Na svazek nelze odkazovat v balíčku artifact_path, dokud neexistuje v pracovním prostoru. Proto pokud chcete k vytvoření svazku použít sady prostředků Databricks, musíte nejprve definovat svazek v sadě, poté ho nasadit, aby byl svazek vytvořen, a pak na něj odkazovat v rámci artifact_path při následných nasazeních.
  • Svazky v sadě nejsou opatřeny předponou dev_${workspace.current_user.short_name}, kdy je cíl nasazení nakonfigurován mode: development. Tuto předponu ale můžete nakonfigurovat ručně. Viz Vlastní předvolby.

Příklad

Následující příklad vytvoří svazek katalogu Unity s klíčem my_volume:

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

Příklad sady, která spouští úlohu, která zapisuje do souboru ve svazku katalogu Unity, najdete v příklady úložiště GitHub.