Bildirim temelli Otomasyon Paketlerini kullanarak Databricks uygulamalarını yönetme

Databricks Uygulamaları, Databricks platformunda kullanıcılarla kolayca paylaşabileceğiniz güvenli veriler ve yapay zeka uygulamaları oluşturmanıza olanak tanır. Bildirim temelli Otomasyon Paketleri'ni kullanarak uygulamalarınızın dağıtımlarını yönetebilirsiniz. Uygulamalar ve paketler hakkında daha fazla bilgi için bkz. Databricks Uygulamaları ve Bildirim temelli Otomasyon Paketleri nedir?.

Bu makalede, yerel olarak bir Databricks uygulaması geliştirme ve ardından Bildirim temelli Otomasyon Paketlerini kullanarak uygulamanın Databricks çalışma alanına dağıtımlarını yönetmek için bir paket yapılandırma adımları gösterilmektedir.

Tavsiye

Streamlit uygulamasıyla örnek bir paket başlatmak için şu komutla bundle init streamlit-app paket şablonunu kullanın:

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

Gereksinimler

Yerel olarak uygulama oluşturma

İlk olarak bir Databricks uygulaması oluşturun. Uygulamalar, Dash veya Gradio gibi popüler çerçeveler kullanılarak Python geliştirilir. Sıfırdan yerel olarak bir Databricks uygulaması oluşturabilir, Databricks çalışma alanında bir uygulama oluşturabilir ve ardından dosyaları yerel makinenizle eşitleyebilir veya GitHub bir Databricks örnek uygulaması alabilirsiniz.

  • Sıfırdan uygulama oluşturmak için:

    1. Çerçeve için hızlı başlangıç öğreticisini izleyin:

    2. Ana Python uygulamanızın nasıl çalıştırılacağını tanımlamak için projenizin köküne bir app.yaml dosyası ekleyin. Örneğin:

      Streamlit uygulaması için:

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

      Veya bir Dash uygulaması için:

      command: ['python', 'app.py']
      
  • Çalışma alanında bir uygulama oluşturmak ve yerel olarak senkronize etmek için:

    1. Kullanıcı arabiriminde uygulama oluşturmak için Databricks Uygulamalarını kullanmaya başlama'daki adımları izleyin.

    2. Uygulama için yerel bir dizin oluşturun ve cd'ye gidin.

      mkdir hello-world-app
      cd hello-world-app
      
    3. Uygulama dosyalarını yerel olarak eşitleyin. Komutunu çalışma alanı kullanıcı arabirimindeki uygulama yükleme sayfasından kopyalayabilir databricks workspace export-dir ve komut satırınızda çalıştırabilirsiniz. Örneğin:

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

      Bu işlem çalışma alanı dizinindeki uygulama dosyalarını yerel makinenizdeki dizine hello-world-app indirir.

  • GitHub'dan bir Databricks örnek uygulaması almak için:

    1. Databricks app şablonları GitHub deposunu klonlayın:

      git clone https://github.com/databricks/app-templates
      
    2. Basit bir uygulama projesi olarak örnek uygulamalardan birini seçin.

Mevcut bir pakete mevcut bir uygulamayı ekleme

Çalışma alanınızda bir Databricks uygulamanız varsa ve uygulamayı eklemek istediğiniz mevcut bir paketiniz varsa komutunu kullanabilirsiniz databricks bundle generate app . Bu komut, uygulama için bir yapılandırma dosyası oluşturur ve uygulama için tüm kaynak kod dosyalarını indirir ve bunları paketinize ekler. Örneğin:

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

Paketinizde uygulama yapılandırmasını oluşturduktan sonra, uygulamanın ve paketin çalışma alanında eşitlenmiş durumda kalmasını sağlamak için databricks bundle bind komutunu kullanın.

databricks bundle generate ve databricks bundle bind hakkında daha fazla bilgi için, bundle komut grubu bölümüne bakın.

Uygulamayı yerel olarak geliştirme ve hatalarını ayıklama

Ardından uygulamanızı yerel olarak geliştirmeye devam edin. komutunu kullanarak uygulamayı başlatın ve uygulamada hata ayıklayın databricks apps run-local . Bu komut, uygulamanın kendisine yönelik proxy istekleri için kullanılan bir uygulama ara sunucusu başlatır ve databricks uygulamasıyla ilgili gerekli üst bilgileri ekler.

  1. Tüm bağımlılıkları yüklemek, sanal ortamı hazırlamak ve uygulamayı ve hata ayıklayıcıyı başlatmak için run-local komutunu, --prepare-environment ve --debug seçenekleriyle kullanın.

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

    Bu komut, sanal ortamı hazırlamak için uv kullanır ve hata ayıklayıcı debugpy üzerine kuruludur.

  2. Uygulamanızı görüntülemek için adresine http://localhost:8001 gidin.

  3. Uygulamanızda hata ayıklamak için durak noktaları ayarlayın. Visual Studio Code Python hata ayıklayıcısını yükleyin, ardından Run>Başla Hata Ayıklama'yi seçin ve ardından Remote Attach seçin.

    Proxy, 5678 numaralı bağlantı noktasında başlar, ancak bunu --port seçeneğini kullanarak yapılandırabilirsiniz.

Uygulamayı çalışma alanına dağıtma

Uygulamanızı çalışma alanına dağıtmaya hazır olduğunuzda, uygulamayı oluşturan paket yapılandırmasını ekleyin ve ardından paketi dağıtın.

  1. Uygulama projenizin kökünde bir dosya databricks.yml oluşturun. Databricks CLI, databricks.yml etkinleştiren, kökünde dosya bulunan bir klasörü paket olarak tanır.

  2. Aşağıdaki YAML'yi kopyalayıp databricks.yml dosyasına yapıştırın; yer tutucu çalışma alanı ve kullanıcı adı değerlerini kendi gerçek değerlerinizle değiştirin.

    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. Paketi doğrulayın ve dağıtın. Varsayılan olarak, bu işlem dev içindeki hedefte uygulamayı ve paketi çalışma alanında oluşturur.

    databricks bundle validate
    databricks bundle deploy
    
  4. Paket dağıtmak, uygulamayı otomatik olarak bir hesaplama ortamına dağıtmaz. Uygulamayı dağıtmak için kullanıcı arabirimini (Databricks çalışma alanında uygulamanın sayfasından) veya Databricks CLI'yi (databricks apps deploy) kullanın. Bkz. Databricks uygulaması dağıtma.

  5. Dağıtılan bundle summary uygulama hakkında bilgi almak için komutunu kullanın:

    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
    

Geliştirme, test, yineleme

Uygulamanızda yerel olarak değişiklik yapmaya devam edin, ardından çalışma alanında uygulamayı güncelleştirmek için paketi yeniden dağıtın. Test sırasında, Azure Databricks çalışma alanınızdaki diğer kullanıcılar için uygulamanın kullanım izinlerini yapılandırmak isteyebilirsiniz. Bunu, izinleri belirterek yapabilirsiniz:

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

Uygulamayı çalışma alanında başlatmak için, komutunda uygulamanın kaynak anahtarını belirterek uygulamayı pakette çalıştırın:

databricks bundle run hello_world_app

Üretime dağıt

Databricks, üretimde kimlik doğrulaması için hizmet sorumlusu kullanılmasını önerir. Uygulamayı üretim ortamında kullanıma hazır hale getirmek için hazır olduğunuzda paket yapılandırmanızı bir hizmet sorumlusu kullanacak şekilde güncelleştirin ve ardından paketi hedef üretim çalışma alanınıza dağıtın. Hizmet sorumluları hakkında bilgi için bkz. CI/CD için hizmet sorumluları.

Hizmet ilkesi kullanımı için paketi değiştir

Üretime dağıtmadan önce hizmet ilkesine izin veren bir yetkiyi pakette yapılandırın. Uygulama oluşturulduğunda veya paket çalıştırıldığında verme işlemini yapılandırabilirsiniz.

Uygulama paket dağıtımında oluşturulduğunda hizmet sorumlusuna izin vermek için, paketin databricks.yml'unu değiştirerek uygulama için bir izin tanımlayın. Hizmet sorumlusunu atamak için paket değiştirme kullanın:

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

Alternatif olarak, paket çalıştırıldığında bir yetkilendirme yapılandıracak şekilde pakette bir iş tanımlayın.

  1. Bir hücrede aşağıdaki içeriklere sahip adlı grant_notebook.ipynb bir not defteri ekleyin. yerine yönetici kullanıcı adı girin <schema-name> .

    app_service_principal = dbutils.widgets.get("app_service_principal")
    spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`")
    
  2. Paketin databricks.yml içindeki bir işte hizmet sorumlusuna izin veren bir not defteri çalıştırmayı tanımlayın. Hizmet ilkesi değerini atamak için paket ikamelerini kullanın.

    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
    

Güncelleştirilmiş paketi dağıtma

Şimdi paketi üretim çalışma alanına dağıtın ve uygulamayı çalıştırın:

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

Ek kaynaklar