Správa aplikací Databricks pomocí prostředků deklarativní automatizace

Databricks Apps umožňuje vytvářet zabezpečené aplikace a aplikace umělé inteligence na platformě Databricks, které můžete snadno sdílet s uživateli. Nasazení aplikací můžete spravovat pomocí deklarativních balíčků automatizace. Další informace o aplikacích a sadách najdete v tématu Databricks Apps a co jsou sady deklarativní automatizace?

Tato stránka vás provede místním vývojem aplikace Databricks a následnou konfigurací sady pro správu nasazení aplikace do pracovního prostoru Databricks pomocí prostředků deklarativní automatizace.

Návod

K inicializaci ukázkové sady s aplikací Streamlit použijte šablonu sady streamlit-app s příkazem bundle init :

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

Požadavky

Vytvořit aplikaci lokálně

Nejprve vytvořte aplikaci Databricks. Aplikace se vyvíjejí v Python pomocí oblíbených architektur, jako jsou Dash nebo Gradio. Aplikaci Databricks můžete vytvořit místně od začátku, vytvořit ji v pracovním prostoru Databricks a pak synchronizovat soubory s místním počítačem nebo získat ukázkovou aplikaci Databricks z GitHub.

  • Vytvoření zcela nové aplikace:

    1. Postupujte podle rychlého úvodního kurzu pro architekturu:

    2. Do kořenového adresáře projektu přidejte soubor app.yaml, který definuje, jak spustit hlavní Python aplikaci. Například:

      Pro aplikaci Streamlit:

      command: ['streamlit', 'run', 'app.py']
      

      Nebo pro aplikaci Dash:

      command: ['python', 'app.py']
      
  • Vytvoření aplikace v pracovním prostoru a jeho místní synchronizace:

    1. Postupujte podle pokynů v tématu Začínáme s Aplikacemi Databricks a vytvořte aplikaci v uživatelském rozhraní.

    2. Vytvořte pro aplikaci místní adresář a vstupte do něj:

      mkdir hello-world-app
      cd hello-world-app
      
    3. Synchronizujte soubory aplikace místně. Příkaz můžete zkopírovat databricks workspace export-dir ze stránky instalace aplikace v uživatelském rozhraní pracovního prostoru a spustit ho na příkazovém řádku. Například:

      databricks workspace export-dir /Workspace/Users/someone@example.com/databricks_apps/hello-world_2025_05_09-17_43/hello-world-app .
      

      Tím se soubory aplikace v adresáři pracovního prostoru stáhnou do hello-world-app adresáře na místním počítači.

  • Získání ukázkové aplikace Databricks z GitHub:

    1. Naklonujte šablony aplikace Databricks GitHub úložiště:

      git clone https://github.com/databricks/app-templates
      
    2. Vyberte jednu z ukázkových aplikací jako jednoduchý projekt aplikace.

Přidání existující aplikace do existující sady

Pokud máte ve svém pracovním prostoru aplikaci Databricks a máte existující sadu, do které chcete aplikaci přidat, můžete použít databricks bundle generate app tento příkaz. Tento příkaz vygeneruje konfigurační soubor aplikace a stáhne všechny soubory zdrojového kódu aplikace a přidá je do vaší sady. Například:

databricks bundle generate app --existing-app-name hello-world-app

Jakmile vygenerujete konfiguraci aplikace ve vašem balíčku, použijte příkaz databricks bundle bind k udržení aplikace v pracovním prostoru a balíčku v synchronizaci.

Další informace o databricks bundle generate a databricks bundle bind naleznete ve skupině příkazů bundle.

Místní vývoj a ladění aplikace

Dále pokračujte v místním vývoji aplikace. Spusťte aplikaci a laděte ji pomocí příkazu databricks apps run-local. Tento příkaz inicializuje proxy aplikací, které se používají pro zprostředkování požadavků na aplikaci samotnou a vmísí potřebné hlavičky týkající se aplikace Databricks.

  1. Pokud chcete nainstalovat všechny závislosti, připravit virtuální prostředí a spustit aplikaci a ladicí program, použijte příkaz run-local s možnostmi --prepare-environment a --debug.

    databricks apps run-local --prepare-environment --debug
    

    Tento příkaz používá uv k přípravě virtuálního prostředí a ladicí program je založen na debugpy.

  2. Přejděte na http://localhost:8001 a zobrazte si aplikaci.

  3. Nastavte body přerušení pro ladění aplikace. V Visual Studio Code nainstalujte ladicí program Python, vyberte Run>Start Debugging a pak Remote Attach.

    Proxy server se spustí na portu 5678, ale můžete ho nakonfigurovat pomocí této --port možnosti.

Nasazení aplikace do pracovního prostoru

Až budete připraveni nasadit aplikaci do pracovního prostoru, přidejte konfiguraci sady, která aplikaci vytvoří, a pak sadu nasaďte.

  1. Vytvořte soubor databricks.yml v kořenovém adresáři projektu aplikace. Rozhraní příkazového řádku Databricks rozpozná složku se souborem databricks.yml v kořenovém adresáři jako sadu, která umožňuje příkazy sady databricks.

  2. Zkopírujte a vložte do souboru následující YAML databricks.yml a nahraďte zástupné hodnoty pracovního prostoru a uživatelského jména vlastními hodnotami:

    bundle:
      name: hello_world_bundle
    
    resources:
      apps:
        hello_world_app:
          name: 'hello-world-app'
          source_code_path: . # This assumes the app source code is at the root of the project.
          description: 'A Databricks app'
    
    targets:
      dev:
        mode: development
        default: true
        workspace:
          host: https://myworkspace.cloud.databricks.com
      prod:
        mode: production
        workspace:
          host: https://myworkspace.cloud.databricks.com
          root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
        permissions:
          - user_name: someone@example.com
            level: CAN_MANAGE
    
  3. Ověřte a poté nasaďte balíček. Ve výchozím nastavení se aplikace a balíček vytvoří v cíli dev v pracovním prostoru.

    databricks bundle validate
    databricks bundle deploy
    
  4. Nasazení sady automaticky nenasadí aplikaci do počítače. K nasazení aplikace použijte uživatelské rozhraní (ze stránky aplikace v pracovním prostoru Databricks) nebo Rozhraní příkazového řádku Databricks (databricks apps deploy). Viz Nasazení aplikace Databricks.

  5. Pomocí příkazu načtěte bundle summary informace o nasazené aplikaci:

    databricks bundle summary
    
    Name: hello_world_bundle
    Target: dev
    Workspace:
      Host: https://myworkspace.cloud.databricks.com
      User: someone@example.com
      Path: /Workspace/Users/someone@example.com/.bundle/hello_world_bundle/dev
    Resources:
      Apps:
        hello_world_app:
          Name: hello-world-app
          URL:  https://myworkspace.cloud.databricks.com/apps/hello-world-app?o=8498204313176880
    

Vývoj, testování a iterace

Pokračujte v místním provádění změn aplikace a pak sadu znovu nasaďte, aby se aplikace aktualizovala v pracovním prostoru. Během testování můžete chtít nakonfigurovat oprávnění k používání aplikace pro ostatní uživatele v pracovním prostoru Azure Databricks, což můžete udělat určením oprávnění:

resources:
  apps:
    hello_world_app:
      name: 'hello-world-app'
      source_code_path: . # This assumes the app source code is at the root of the project.
      description: 'A Databricks app'
      permissions:
        - level: CAN_USE
          group_name: users

Pokud chcete spustit aplikaci v pracovním prostoru, spusťte ji v rámci balíčku určením klíče prostředku pro aplikaci v příkazu:

databricks bundle run hello_world_app

Nasazení do produkčního prostředí

Databricks doporučuje pro ověřování v produkčním prostředí použít hlavní službu. Až budete připraveni aplikaci zpřístupnit v produkčním prostředí, aktualizujte konfiguraci sady tak, aby používala instanční objekt, a pak tuto sadu nasaďte do cílového produkčního pracovního prostoru. Informace o služebních principalech najdete v tématu Služební principály pro CI/CD.

Úprava sady pro použití instančního objektu

Před nasazením do produkčního prostředí nakonfigurujte grant v balíčku, který dává oprávnění aplikačnímu objektu. Můžete nakonfigurovat oprávnění při vytvoření aplikace nebo při spuštění balíčku.

Pro udělení oprávnění služebnímu hlavnímu objektu při vytvoření aplikace při nasazení balíčku upravte balíček databricks.yml tak, aby definoval udělení oprávnění aplikaci. K přiřazení instančního objektu použijte náhradu sady:

bundle:
  name: hello_world_bundle

resources:
  apps:
    hello_world_app:
      name: 'hello-world-app'
      source_code_path: . # This assumes the app source code is at the root of the project.
      description: 'A Databricks app'

  schemas:
    my_schema:
      name: my_schema
      grants:
        # highlight-next-line
        - principal: '${resources.apps.hello_world_app.service_principal_client_id}'
          privileges:
            - CREATE_TABLE
      catalog_name: main

targets:
  dev:
    mode: development
    default: true
    workspace:
      host: https://myworkspace.cloud.databricks.com
  prod:
    mode: production
    workspace:
      host: https://myworkspace.cloud.databricks.com
      root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
    permissions:
      - user_name: someone@example.com
        level: CAN_MANAGE

Alternativně definujte úlohu v sadě, která při spuštění sady konfiguruje grant:

  1. Přidejte do buňky poznámkový blok grant_notebook.ipynb s následujícím obsahem. Nahraďte <schema-name> uživatelským jménem správce.

    app_service_principal = dbutils.widgets.get("app_service_principal")
    spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`")
    
  2. Definujte úlohu v balíčku databricks.yml pro spuštění notebooku, který uděluje oprávnění služební identitě. Použijte náhrady balíčku k přiřazení hodnoty service principal:

    bundle:
      name: hello_world_bundle
    
    resources:
      apps:
        hello_world_app:
          name: 'hello-world-app'
          source_code_path: . # This assumes the app source code is at the root of the project.
          description: 'A Databricks app'
    
      jobs:
        grant_job:
          name: 'grant-job'
          parameters:
            - name: app_service_principal
              # highlight-next-line
              default: '${resources.apps.hello_world_app.service_principal_client_id}'
          tasks:
            - task_key: setup_grants
              notebook_task:
                notebook_path: ./grant_notebook.ipynb
    
    targets:
      dev:
        mode: development
        default: true
        workspace:
          host: https://myworkspace.cloud.databricks.com
      prod:
        mode: production
        workspace:
          host: https://myworkspace.cloud.databricks.com
          root_path: /Workspace/Users/someone@example.com/.bundle/${bundle.name}/${bundle.target}
        permissions:
          - user_name: someone@example.com
            level: CAN_MANAGE
    

Nasazení aktualizované sady

Teď nasaďte sadu do produkčního pracovního prostoru a spusťte aplikaci:

databricks bundle deploy -t prod
databricks bundle run grant_job -t prod # (Optional) Run this if the grant is configured with a job
databricks bundle run hello_world_app -t prod

Dodatečné zdroje