Udostępnij za pośrednictwem


Zasoby pakietów aktywów usługi Databricks

Pakiety zasobów usługi Databricks umożliwiają określenie informacji o zasobach usługi Azure Databricks używanych w ramach pakietu w mapowaniu resources w ramach konfiguracji pakietu. Zobacz odwzorowanie zasobów i kluczowy odnośnik zasobów.

W tym artykule opisano obsługiwane typy zasobów dla pakietów oraz szczegółowe informacje i przykład dla każdego obsługiwanego typu. Aby uzyskać dodatkowe przykłady, zobacz przykłady konfiguracji pakietu .

Napiwek

Aby wygenerować kod YAML dla dowolnego istniejącego zasobu, użyj polecenia databricks bundle generate. Zobacz Generowanie pliku konfiguracji pakietu.

Obsługiwane zasoby

W poniższej tabeli wymieniono obsługiwane typy zasobów dla pakietów. Niektóre zasoby można utworzyć, definiując je w pakiecie i wdrażając pakiet, a niektóre zasoby obsługują tylko odwoływanie się do istniejącego zasobu do uwzględnienia w pakiecie.

Zasoby są definiowane przy użyciu odpowiedniego interfejsu API REST usługi Databricks ładunku żądania operacji tworzenia obiektu, gdzie obsługiwane pola obiektu, wyrażone jako YAML, są obsługiwanymi właściwościami zasobu. Linki do dokumentacji ładunków danych odpowiadających poszczególnym zasobom są wymienione w tabeli.

Napiwek

Polecenie databricks bundle validate zwraca ostrzeżenia, jeśli w plikach konfiguracji pakietu znajdują się nieznane właściwości zasobu.

Zasób Utwórz wsparcie Odpowiedni obiekt interfejsu API REST
aplikacja obiekt aplikacji
klaster obiekt klastra
deska rozdzielcza Obiekt pulpitu nawigacyjnego
eksperyment obiekt eksperymentu
praca Obiekt zadania
model (legacy) model (starsza wersja) obiektu
punkt_serwowania_modelu Model obsługujący obiekt punktu końcowego
pipelina potokowy obiekt
monitor_jakości obiekt monitora jakości
registered_model (Unity Catalog) zarejestrowany obiekt modelu
schema (Unity Catalog) obiekt schematu
wolumin (Unity Catalog) Obiekt woluminu

aplikacja

Zasób aplikacji definiuje aplikację Databricks. Aby uzyskać informacje o usłudze Databricks Apps, zobacz Co to jest usługa Databricks Apps?.

Napiwek

Pakiet można zainicjować za pomocą aplikacji Streamlit Databricks przy użyciu następującego polecenia:

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

Aby dodać aplikację, określ pola obiektu definiujące aplikację, a także następujące elementy:

  • source_code_path — ścieżka lokalna ./app kodu źródłowego aplikacji usługi Databricks. To pole jest wymagane.
  • config — polecenia konfiguracji aplikacji i zmienne środowiskowe. Służy do określania różnych celów wdrożenia aplikacji.

Przykład

Poniższy przykład tworzy aplikację o nazwie my_app, która zarządza zadaniem utworzonym przez pakiet:

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'

Aby sprawdzić pełny pakiet przykładowy aplikacji Databricks, zobacz repozytorium GitHub bundle-examples.

klaster

Zasób klastra definiuje klaster ogólnego przeznaczenia.

Przykład

Poniższy przykład tworzy klaster o nazwie my_cluster i ustawia go jako klaster, który będzie używany do uruchomienia notatnika w 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'

panel sterowania

Zasób umożliwia zarządzanie dashboardami AI/BI w pakiecie. Aby uzyskać informacje na temat pulpitów nawigacyjnych AI/BI, zobacz Dashboards.

Przykład

W poniższym przykładzie przedstawiono i wdrożono przykładowy pulpit nawigacyjny NYC Taxi Trip Analysis w obszarze roboczym usługi 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}

Jeśli używasz interfejsu użytkownika do modyfikowania pulpitu nawigacyjnego, modyfikacje wprowadzone za pośrednictwem interfejsu użytkownika nie są stosowane do pliku JSON pulpitu nawigacyjnego w pakiecie lokalnym, chyba że jawnie zaktualizujesz go przy użyciu bundle generate. Możesz użyć opcji --watch, aby stale sondować i pobierać zmiany na pulpicie nawigacyjnym. Zobacz Generowanie pliku konfiguracji pakietu.

Ponadto w przypadku próby wdrożenia pakietu zawierającego plik JSON pulpitu nawigacyjnego, który różni się od tego w zdalnym obszarze roboczym, wystąpi błąd. Aby wymusić wdrożenie i zastąpienie pulpitu nawigacyjnego w zdalnym obszarze roboczym przy użyciu lokalnego, użyj opcji --force. Zobacz Wdrażanie pakietu.

eksperyment

Zasób do eksperymentów umożliwia zdefiniowanie eksperymentów MLflow w ramach pakietu. Aby uzyskać informacje na temat eksperymentów MLflow, zobacz Organizowanie przebiegów trenowania za pomocą eksperymentów MLflow.

Przykład

W poniższym przykładzie zdefiniowano eksperyment, który może wyświetlać wszyscy użytkownicy:

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

zadanie

Zasób pracy umożliwia zdefiniowanie prac i odpowiadających im zadań w pakiecie. Aby uzyskać informacje o pracach, zobacz Omówienie orkiestracji w Databricks. Aby zapoznać się z samouczkiem, który używa szablonu pakietów zasobów usługi Databricks do utworzenia zadania, zobacz Develop a job on Azure Databricks using Databricks Asset Bundles (Tworzenie zadania w usłudze Azure Databricks przy użyciu pakietów zasobów usługi Databricks).

Przykład

W poniższym przykładzie zdefiniowano zadanie z kluczem zasobu hello-job z jednym zadaniem w notatniku:

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

Aby uzyskać informacje na temat definiowania zadań i zastępowania ustawień zadań, zobacz Dodawanie zadań do zadań w Pakietach Zasobów Databricks, Zastępowanie ustawień zadań w Pakietach Zasobów Databricksi Zastępowanie ustawień klastra w Pakietach Zasobów Databricks.

model (starsza wersja)

Zasób dotyczący modelu pozwala na definiowanie starszych modeli w pakietach. Usługa Databricks zaleca zamiast tego korzystanie z zarejestrowanych modeli w Katalogu Unity.

model_serving_endpoint

Zasób model_serving_endpoint umożliwia zdefiniowanie modelu obsługującego punkty końcowe. Zobacz Zarządzanie modelem obsługującym punkty końcowe.

Przykład

W poniższym przykładzie zdefiniowano punkt końcowy serwowania modelu w 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'

quality_monitor (wykaz aparatu Unity)

Zasób quality_monitor umożliwia zdefiniowanie monitora tabeli Unity Catalog. Aby uzyskać informacje o monitorach, zobacz Monitorowanie jakości modelu i kondycji punktu końcowego.

Przykład

W poniższym przykładzie zdefiniowano monitor jakości:

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 (wykaz aparatu Unity)

Zasób zarejestrowanego modelu umożliwia definiowanie modeli w katalogu Unity. Aby uzyskać informacje na temat modeli zarejestrowanych w katalogu Unity, zobacz Zarządzanie cyklem życia modelu w katalogu Unity.

Przykład

W poniższym przykładzie zdefiniowano zarejestrowany model w 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

przewód

Zasób potoku umożliwia Ci tworzenie potoków DLT . Aby uzyskać informacje na temat potoków, zobacz sekcję Co to jest DLT?. Aby zapoznać się z samouczkiem, który korzysta z szablonu Pakietów Zasobów Databricks do tworzenia potoków, zobacz Tworzenie potoków DLT za pomocą Pakietów Zasobów Databricks.

Przykład

W poniższym przykładzie zdefiniowano potok z kluczem zasobu 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

schemat (Unity Catalog)

Typ zasobu schematu umożliwia zdefiniowanie schematów Unity Catalog dla tabel i innych zasobów w przepływach pracy i potokach tworzonych w ramach pakietu. Schemat, inny niż inne typy zasobów, ma następujące ograniczenia:

  • Właściciel zasobu schematu jest zawsze użytkownikiem wdrożenia i nie można go zmienić. Jeśli run_as zostanie określony w pakiecie, zostanie on zignorowany przez operacje w schemacie.
  • Dla zasobu schematu są dostępne tylko pola obsługiwane przez odpowiedni obiekt Schemas create API. Na przykład enable_predictive_optimization nie jest obsługiwany, ponieważ jest dostępny tylko w aktualizacji API .

Przykłady

W poniższym przykładzie zdefiniowano potok z kluczem zasobu my_pipeline, który tworzy schemat Unity Catalog z kluczem my_schema jako element docelowy.

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.

Mapowanie uprawnień najwyższego poziomu nie jest obsługiwane przez pakiety zasobów usługi Databricks, więc jeśli chcesz ustawić uprawnienia dla schematu, zdefiniuj uprawnienia dla schematu w ramach mapowania schemas. Aby uzyskać więcej informacji na temat uprawnień, zobacz Pokazywanie, przyznawanie i cofanie przywilejów.

W poniższym przykładzie zdefiniowano schemat Unity Catalog z grantami.

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

wolumin (Unity Catalog)

Typ zasobu woluminu umożliwia definiowanie i tworzenie woluminów w Unity Catalog jako część pakietu. Podczas wdrażania pakietu z zdefiniowanym woluminem należy pamiętać, że:

  • Nie można odwołać się do woluminu w artifact_path dla pakietu, dopóki nie będzie on istniał w obszarze roboczym. W związku z tym, jeśli chcesz użyć pakietów zasobów usługi Databricks do utworzenia woluminu, musisz najpierw zdefiniować wolumin w pakiecie, wdrożyć go w celu utworzenia woluminu, a następnie odwołać się do niego w artifact_path w kolejnych wdrożeniach.
  • Woluminy w pakiecie nie są poprzedzone prefiksem dev_${workspace.current_user.short_name}, jeśli cel wdrożenia ma skonfigurowany mode: development. Można jednak ręcznie skonfigurować ten prefiks. Zobacz Niestandardowe ustawienia wstępne.

Przykład

Poniższy przykład tworzy wolumin Unity Catalog o kluczu my_volume:

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

Przykładowy pakiet uruchamiający zadanie, które zapisuje do pliku w woluminie Unity Catalog, można znaleźć w repozytorium GitHub bundle-examples.