Megosztás:


Databricks-alkalmazások kezelése a Databricks Asset Bundles használatával

A Databricks Apps segítségével biztonságos adatokat és AI-alkalmazásokat hozhat létre a Databricks platformon, amelyeket egyszerűen megoszthat a felhasználókkal. Az alkalmazások üzembe helyezését a Databricks Asset Bundles használatával kezelheti. További információ az alkalmazásokról és csomagokról: Databricks Apps and What are Databricks Asset Bundles?.

Ez a cikk végigvezeti egy Databricks-alkalmazás helyi fejlesztésén, majd konfigurál egy csomagot az alkalmazás Databricks-munkaterületre történő üzembe helyezésének kezeléséhez a Databricks Eszközcsomagok használatával.

Jótanács

Ha streamlit alkalmazással szeretne inicializálni egy példacsomagot, használja a streamlit-app kötegsablont a bundle init következő paranccsal:

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

Követelmények

Alkalmazás helyi létrehozása

Először hozzon létre egy Databricks-alkalmazást. Az alkalmazásokat a Pythonban fejlesztették ki olyan népszerű keretrendszerek használatával, mint például a Dash vagy a Gradio. A Databricks-alkalmazásokat helyileg is létrehozhatja az alapoktól, létrehozhat egyet a Databricks-munkaterületen, majd szinkronizálhatja a fájlokat a helyi gépére, vagy lekérhet egy Databricks-mintaalkalmazást a GitHubról.

  • Alkalmazás létrehozása az alapoktól:

    1. Kövesse a keretrendszer gyors üzembe helyezési oktatóanyagát:

    2. Adjon hozzá egy app.yaml fájlt a projekt gyökeréhez a fő Python-alkalmazás futtatásának meghatározásához. Például:

      Streamlit-alkalmazás esetén:

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

      Vagy Dash-alkalmazás esetén:

      command: ['python', 'app.py']
      
  • Alkalmazás létrehozása a munkaterületen és helyi szinkronizálás:

    1. A Databricks Apps használatának első lépéseit követve hozzon létre egy alkalmazást a felhasználói felületen.

    2. Hozzon létre egy helyi könyvtárat az alkalmazáshoz, és lépjen be cd abba:

      mkdir hello-world-app
      cd hello-world-app
      
    3. Szinkronizálja az alkalmazásfájlokat helyileg. A parancsot átmásolhatja a databricks workspace export-dir munkaterület felhasználói felületén található alkalmazástelepítési lapról, és futtathatja a parancssorban. Például:

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

      Ez letölti a munkaterület könyvtárában lévő alkalmazásfájlokat a hello-world-app helyi gép könyvtárába.

  • Databricks-mintaalkalmazás lekérése a GitHubról:

    1. Klónozza a Databricks-alkalmazássablonokat a GitHub-adattárban:

      git clone https://github.com/databricks/app-templates
      
    2. Válasszon egy mintaalkalmazást egyszerű alkalmazásprojektként.

Meglévő alkalmazás hozzáadása meglévő csomaghoz

Ha a munkaterületen van egy Databricks-alkalmazás, és van egy meglévő csomagja, amelyhez hozzá szeretné adni az alkalmazást, használhatja a databricks bundle generate app parancsot. Ez a parancs létrehoz egy konfigurációs fájlt az alkalmazáshoz, letölti az alkalmazás összes forráskódfájlját, és hozzáadja őket a csomaghoz. Például:

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

Miután létrehozta az alkalmazáskonfigurációt a csomagban, a databricks bundle bind paranccsal tartsa szinkronban az alkalmazást a munkaterületen és a csomagban.

További információkért a databricks bundle generate és databricks bundle bind című kérje meg a bundle parancscsoportot.

Az alkalmazás helyi fejlesztése és hibakeresése

Ezután folytassa az alkalmazás helyi fejlesztését. Indítsa el és hibakeresse meg az alkalmazást a databricks apps run-local paranccsal. Ez a parancs elindít egy alkalmazásproxyt, amely az alkalmazásnak küldött kérelmek proxyzására szolgál, és a szükséges Databricks-alkalmazásfejléceket injektálja.

  1. Az összes függőség telepítéséhez készítse elő a virtuális környezetet, és indítsa el az alkalmazást és a hibakeresőt, használja a run-local parancsot a --prepare-environment--debug következő beállításokkal:

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

    Ez a parancs a uv-t használja a virtuális környezet előkészítésére, a hibakereső pedig a debugpy alapján működik.

  2. Navigáljon az http://localhost:8001 alkalmazás megtekintéséhez.

  3. Állítson be töréspontokat az alkalmazás hibakereséséhez. A Visual Studio Code-ban telepítse a Python hibakeresőt, majd válassza aHibakeresés indítása, majd a >.

    A proxy az 5678-os porton kezdődik, de a beállítással --port konfigurálhatja.

Az alkalmazás üzembe helyezése a munkaterületen

Ha készen áll az alkalmazás munkaterületen való üzembe helyezésére, adja hozzá az alkalmazást létrehozó csomagkonfigurációt, majd telepítse a csomagot.

  1. Hozzon létre egy fájlt databricks.yml az alkalmazásprojekt gyökerénél. A Databricks parancssori felülete csomagként ismer fel egy databricks.yml fájlt tartalmazó mappát, amely lehetővé teszi a Databricks-csomagparancsok használatát.

  2. Másolja és illessze be a következő YAML fájlt a databricks.yml fájlba, majd helyettesítse a helyőrző "munkaterület" és "felhasználónév" értékeket a saját értékeivel.

    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. Ellenőrizze, majd telepítse a csomagot. Alapértelmezés szerint ez létrehozza az alkalmazást és a csomagot a dev munkaterületen lévő célban.

    databricks bundle validate
    databricks bundle deploy
    
  4. A csomag üzembe helyezése nem telepíti automatikusan az alkalmazást a számításhoz. Az alkalmazás üzembe helyezéséhez használja a felhasználói felületet (az alkalmazás lapjáról a Databricks-munkaterületen) vagy a Databricks parancssori felületét (databricks apps deploy). Lásd : Databricks-alkalmazás üzembe helyezése.

  5. bundle summary A paranccsal lekérheti az üzembe helyezett alkalmazással kapcsolatos információkat:

    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
    

Fejlesztés, tesztelés, iteráció

Folytassa az alkalmazás helyi módosítását, majd helyezze újra üzembe a csomagot, hogy frissítse az alkalmazást a munkaterületen. A tesztelés során érdemes lehet konfigurálni az alkalmazás használati engedélyeit más felhasználók számára az Azure Databricks-munkaterületen, amelyet az engedélyek megadásával tehet meg:

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

Az alkalmazás a munkaterületen való elindításához futtassa az alkalmazást a csomagban az alkalmazás erőforráskulcsának a parancsban való megadásával:

databricks bundle run hello_world_app

Éles környezetbe telepítés

A Databricks szolgáltatás főfelhasználójának használatát javasolja az éles környezetben végzett hitelesítéshez. Ha készen áll arra, hogy az alkalmazást éles környezetben elérhetővé tegye, frissítse a csomagkonfigurációt egy szolgáltatásnév használatára, majd helyezze üzembe a csomagot a cél éles munkaterületen. A szolgáltatásnevekről további információt a CI/CD szolgáltatásnevekben talál.

Csomag módosítása szolgáltatásnév használatára

Az éles környezetben való üzembe helyezés előtt konfiguráljon egy engedélyt a csomagban, amely engedélyt ad egy szolgáltatási fióknak. A támogatás konfigurálható az alkalmazás létrehozásakor vagy a csomag futtatásakor.

A szolgáltatásnév engedélyének megadásához, amikor az alkalmazás a csomag üzembe helyezésekor jön létre, módosítsa a csomag databricks.yml-ját, hogy engedélyt hozzon létre az alkalmazás számára. A szolgáltatásnév hozzárendeléséhez használjon csomaghelyettesítést:

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

Másik lehetőségként definiáljon egy feladatot a csomagban, amely a csomag futtatásakor konfigurál egy támogatást:

  1. Hozzon létre egy jegyzetfüzetet grant_notebook.ipynb néven, amelynek tartalma a következő egy cellában. Cserélje le <schema-name> egy rendszergazdai felhasználónévre.

    app_service_principal = dbutils.widgets.get("app_service_principal")
    spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`")
    
  2. Határozzon meg egy munkát a csomagban databricks.yml, amely futtat egy jegyzetfüzetet, hogy engedélyt adjon a szolgáltatási főfelhasználónak. A szolgáltatásazonosító értékének hozzárendeléséhez használjon csomaghelyettesítést.

    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
    

A frissített csomag üzembe helyezése

Most helyezze üzembe a csomagot az éles munkaterületen, és futtassa az alkalmazást:

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

További erőforrások