Mengelola aplikasi Databricks menggunakan Bundel Otomatisasi Deklaratif

Aplikasi Databricks memungkinkan Anda membuat data dan aplikasi AI yang aman di platform Databricks yang dapat Anda bagikan dengan mudah kepada pengguna. Anda dapat mengelola penyebaran aplikasi menggunakan Bundel Otomatisasi Deklaratif. Untuk informasi selengkapnya tentang aplikasi dan bundel, lihat Aplikasi Databricks dan Apa itu Bundel Otomatisasi Deklaratif?.

Artikel ini memandu Anda mengembangkan aplikasi Databricks secara lokal, lalu mengonfigurasi bundel untuk mengelola penyebaran aplikasi ke ruang kerja Databricks menggunakan Bundel Otomatisasi Deklaratif.

Petunjuk / Saran

Untuk menginisialisasi contoh bundel dengan aplikasi Streamlit, gunakan templat bundel streamlit-app dengan bundle init perintah :

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

Persyaratan

Membuat aplikasi secara lokal

Pertama, buat aplikasi Databricks. Aplikasi dikembangkan dalam Python menggunakan kerangka kerja populer, seperti Dash atau Gradio. Anda dapat membuat aplikasi Databricks secara lokal dari awal, membuatnya di ruang kerja Databricks lalu menyinkronkan file ke komputer lokal Anda, atau mendapatkan aplikasi sampel Databricks dari GitHub.

  • Untuk membuat aplikasi dari awal:

    1. Ikuti tutorial mulai cepat untuk kerangka kerja:

    2. Tambahkan file app.yaml ke akar proyek Anda untuk menentukan cara menjalankan aplikasi Python utama Anda. Contohnya:

      Untuk aplikasi Streamlit:

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

      Atau untuk aplikasi Dash:

      command: ['python', 'app.py']
      
  • Untuk membuat aplikasi di ruang kerja dan menyinkronkannya secara lokal:

    1. Ikuti langkah-langkah di Mulai menggunakan Aplikasi Databricks untuk membuat aplikasi di UI.

    2. Buat direktori lokal untuk aplikasi dan cd ke dalamnya:

      mkdir hello-world-app
      cd hello-world-app
      
    3. Sinkronkan file aplikasi secara lokal. Anda dapat menyalin databricks workspace export-dir perintah dari halaman penginstalan aplikasi di antarmuka pengguna ruang kerja dan menjalankannya di baris perintah Anda. Contohnya:

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

      Ini mengunduh file aplikasi di direktori ruang kerja ke hello-world-app direktori di komputer lokal Anda.

  • Untuk mendapatkan aplikasi sampel Databricks dari GitHub:

    1. Kloning templat Databricks app GitHub repositori:

      git clone https://github.com/databricks/app-templates
      
    2. Pilih salah satu aplikasi sampel sebagai proyek aplikasi sederhana.

Menambahkan aplikasi yang sudah ada ke bundel yang sudah ada

Jika Anda memiliki aplikasi Databricks di ruang kerja Anda, dan memiliki bundel yang sudah ada yang ingin Anda tambahkan aplikasinya, Anda dapat menggunakan perintah .databricks bundle generate app Perintah ini menghasilkan file konfigurasi untuk aplikasi dan mengunduh semua file kode sumber untuk aplikasi, dan menambahkannya ke bundel Anda. Contohnya:

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

Setelah Anda membuat konfigurasi aplikasi di dalam bundel, gunakan perintah databricks bundle bind untuk menjaga agar aplikasi dan bundel tetap sinkron di ruang kerja.

Untuk informasi selengkapnya tentang databricks bundle generate dan databricks bundle bind, lihat bundle grup perintah.

Mengembangkan dan men-debug aplikasi secara lokal

Selanjutnya, lanjutkan mengembangkan aplikasi Anda secara lokal. Luncurkan dan debug aplikasi menggunakan databricks apps run-local perintah . Perintah ini memulai proksi aplikasi yang digunakan untuk memproksi permintaan ke aplikasi itu sendiri dan menyuntikkan header terkait aplikasi Databricks yang diperlukan.

  1. Untuk menginstal semua dependensi, menyiapkan lingkungan virtual, dan memulai aplikasi serta debugger, gunakan perintah run-local dengan opsi-opsi --prepare-environment dan --debug.

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

    Perintah ini menggunakan uv untuk menyiapkan lingkungan virtual dan debugger didasarkan pada debugpy.

  2. Navigasikan ke http://localhost:8001 untuk melihat aplikasi Anda.

  3. Atur titik henti untuk men-debug aplikasi Anda. Di Visual Studio Code, lakukan instalasi debugger Python, kemudian pilih Run>Mulai Debugging dan kemudian Penautan Jarak Jauh.

    Proksi dimulai pada port 5678, tetapi Anda dapat mengonfigurasinya menggunakan --port opsi .

Menyebarkan aplikasi ke ruang kerja

Saat Anda siap untuk menyebarkan aplikasi ke ruang kerja, tambahkan konfigurasi bundel yang membuat aplikasi, lalu sebarkan bundel.

  1. Buat file databricks.yml di akar proyek aplikasi Anda. CLI Databricks mengenali folder dengan file databricks.yml di akar foldernya sebagai bundel, yang memungkinkan perintah bundel Databricks.

  2. Salin dan tempel YAML berikut ke databricks.yml dalam file, menggantikan ruang kerja tempat penampung dan nilai nama pengguna untuk Anda sendiri:

    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. Validasi, lalu terapkan bundel. Secara default, ini membuat aplikasi dan bundel di target dev dalam ruang kerja.

    databricks bundle validate
    databricks bundle deploy
    
  4. Menyebarkan bundel tidak secara otomatis menyebarkan aplikasi untuk menghitung. Untuk menyebarkan aplikasi, gunakan UI (dari halaman aplikasi di ruang kerja Databricks) atau Databricks CLI (databricks apps deploy). Lihat Menyebarkan aplikasi Databricks.

  5. bundle summary Gunakan perintah untuk mengambil informasi tentang aplikasi yang disebarkan:

    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
    

Mengembangkan, menguji, melakukan iterasi

Terus buat perubahan pada aplikasi Anda secara lokal, lalu sebarkan ulang bundel untuk memperbarui aplikasi di ruang kerja. Selama pengujian, Anda mungkin ingin mengonfigurasi izin penggunaan untuk aplikasi untuk pengguna lain di ruang kerja Azure Databricks Anda, yang dapat Anda lakukan dengan izin spesifikasi:

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

Untuk memulai aplikasi di ruang kerja, jalankan aplikasi di bundel dengan menentukan kunci sumber daya untuk aplikasi dalam perintah:

databricks bundle run hello_world_app

Menyebarkan ke lingkungan produksi

Databricks merekomendasikan penggunaan service principal untuk autentikasi dalam produksi. Saat Anda siap untuk membuat aplikasi tersedia untuk produksi, perbarui konfigurasi bundel Anda untuk menggunakan prinsipal layanan, lalu sebarkan bundel ke ruang kerja produksi target Anda. Untuk informasi tentang prinsipal layanan, lihat Prinsipal layanan untuk CI/CD.

Modifikasi bundel untuk menggunakan prinsipal layanan

Sebelum menyebarkan ke produksi, konfigurasikan izin dalam bundel yang memberikan hak akses kepada prinsipal layanan. Anda dapat mengonfigurasi pemberian saat aplikasi dibuat atau saat bundel dijalankan.

Untuk memberikan izin kepada perwakilan layanan saat aplikasi dibuat dalam proses penyebaran bundel, ubah konfigurasi bundel databricks.yml untuk menentukan izin aplikasi. Gunakan penggantian bundel untuk menetapkan prinsipal layanan.

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

Atau, tentukan pekerjaan dalam bundel yang mengonfigurasi hibah saat bundel dijalankan:

  1. Tambahkan buku catatan yang dipanggil grant_notebook.ipynb dengan konten berikut dalam sel. Ganti <schema-name> dengan nama pengguna admin.

    app_service_principal = dbutils.widgets.get("app_service_principal")
    spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`")
    
  2. Tentukan pekerjaan di dalam bundel databricks.yml untuk menjalankan notebook yang memberikan izin kepada prinsipal layanan. Gunakan substitusi bundel untuk menetapkan nilai prinsipal layanan.

    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
    

Menyebarkan bundel yang diperbarui

Sekarang sebarkan bundel ke ruang kerja produksi dan jalankan aplikasi:

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

Sumber daya tambahan