Compartir a través de


Administración de aplicaciones de Databricks mediante Conjuntos de recursos de Databricks

Databricks Apps le permite crear aplicaciones de inteligencia artificial y datos seguros en la plataforma de Databricks que puede compartir fácilmente con los usuarios. Puede administrar las implementaciones de las aplicaciones mediante Conjuntos de recursos de Databricks. Para obtener más información sobre las aplicaciones y agrupaciones, consulte Aplicaciones de Databricks y ¿Qué son los conjuntos de recursos de Databricks?.

Este artículo le guía a través del desarrollo de una aplicación de Databricks localmente y, a continuación, configura una agrupación para administrar las implementaciones de la aplicación en el área de trabajo de Databricks mediante Conjuntos de recursos de Databricks.

Sugerencia

Para inicializar un paquete de ejemplo con una aplicación Streamlit, use la plantilla streamlit-app bundle con el bundle init comando :

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

Requisitos

Creación de una aplicación localmente

En primer lugar, cree una aplicación de Databricks. Las aplicaciones se desarrollan en Python mediante marcos populares, como Dash o Gradio. Puede compilar una aplicación de Databricks localmente desde cero, crear una en el área de trabajo de Databricks y, a continuación, sincronizar los archivos con la máquina local o obtener una aplicación de ejemplo de Databricks desde GitHub.

  • Para compilar una aplicación desde cero:

    1. Siga un tutorial de inicio rápido para un marco:

    2. Agregue un app.yaml archivo a la raíz del proyecto para definir cómo ejecutar la aplicación principal de Python. Por ejemplo:

      Para una aplicación Streamlit:

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

      Ejemplo de una aplicación Dash:

      command: ['python', 'app.py']
      
  • Para crear una aplicación en el área de trabajo y sincronizarla localmente:

    1. Siga los pasos descritos en Introducción a las aplicaciones de Databricks para crear una aplicación en la interfaz de usuario.

    2. Cree un directorio local para la aplicación y cd en él:

      mkdir hello-world-app
      cd hello-world-app
      
    3. Sincronice los archivos de la aplicación localmente. Puede copiar el databricks workspace export-dir comando desde la página de instalación de la aplicación en la interfaz de usuario del área de trabajo y ejecutarlo en la línea de comandos. Por ejemplo:

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

      Esto descarga los archivos de la aplicación del directorio del área de trabajo al directorio hello-world-app de tu equipo local.

  • Para obtener una aplicación de ejemplo de Databricks desde GitHub:

    1. Clona el repositorio de GitHub de plantillas de aplicaciones de Databricks:

      git clone https://github.com/databricks/app-templates
      
    2. Elija una de las aplicaciones de ejemplo como un proyecto de aplicación simple.

Agregar una aplicación existente a una agrupación existente

Si tiene una aplicación de Databricks en el área de trabajo y tiene un lote existente al que desea agregar la aplicación, puede usar el databricks bundle generate app comando . Este comando genera un archivo de configuración para la aplicación y descarga todos los archivos de código fuente de la aplicación y los agrega a la agrupación. Por ejemplo:

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

Después de haber generado la configuración de la aplicación en el paquete, use el comando databricks bundle bind para mantener la aplicación del área de trabajo y el paquete sincronizados.

Para obtener más información sobre databricks bundle generate y databricks bundle bind, vea grupo bundle de comandos.

Desarrollo y depuración de la aplicación localmente

A continuación, continúe desarrollando la aplicación localmente. Inicie y depure la aplicación mediante el databricks apps run-local comando . Este comando inicia un proxy de aplicación que se utiliza para redirigir las solicitudes a la aplicación misma e inserta los encabezados necesarios relacionados con la aplicación de Databricks.

  1. Para instalar todas las dependencias, preparar el entorno virtual e iniciar la aplicación y el depurador, use el comando run-local con las opciones --prepare-environment y --debug.

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

    Este comando usa uv para preparar el entorno virtual y el depurador se basa en debugpy.

  2. Vaya a http://localhost:8001 para ver la aplicación.

  3. Establezca puntos de interrupción para depurar la aplicación. En Visual Studio Code, instale el depurador de Python y, después, seleccione Ejecutar>Iniciar depuración y, después, Conexión remota.

    El proxy se inicia en el puerto 5678, pero puede configurarlo mediante la --port opción .

Implementación de la aplicación en el área de trabajo

Cuando esté listo para implementar la aplicación en el área de trabajo, agregue la configuración de agrupación que crea la aplicación y, a continuación, implemente la agrupación.

  1. Cree un archivo databricks.yml en la raíz del proyecto de aplicación. La CLI de Databricks reconoce una carpeta con un databricks.yml archivo en su raíz como una agrupación, lo que permite comandos de agrupación de databricks.

  2. Copie y pegue el siguiente código YAML en el archivo databricks.yml, sustituyendo los valores de espacio de trabajo y nombre de usuario de marcador de posición por los suyos propios.

    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. Valide y luego implemente el paquete. De forma predeterminada, esto crea la aplicación y el paquete en el objetivo dev del área de trabajo.

    databricks bundle validate
    databricks bundle deploy
    
  4. La implementación de un paquete no implica que la aplicación se implemente automáticamente en computación. Para implementar la aplicación, use la interfaz de usuario (desde la página de la aplicación en el área de trabajo de Databricks) o la CLI de Databricks (databricks apps deploy). Consulte Implementación de una aplicación de Databricks.

  5. Use el bundle summary comando para recuperar información sobre la aplicación implementada:

    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
    

Desarrollo, prueba, iteración

Continúe realizando cambios en la aplicación localmente y vuelva a implementar la agrupación para actualizar la aplicación en el área de trabajo. Durante las pruebas, es posible que quiera configurar los permisos de uso para la aplicación para otros usuarios en el área de trabajo de Azure Databricks, lo que puede hacer especificando permisos:

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

Para iniciar la aplicación en el área de trabajo, ejecute la aplicación en la agrupación especificando la clave de recurso para la aplicación en el comando :

databricks bundle run hello_world_app

Implementación en producción

Databricks recomienda usar un principal de servicio para la autenticación en producción. Cuando esté listo para que la aplicación esté disponible en producción, actualice la configuración del paquete para usar una entidad de servicio y, a continuación, implemente el paquete en el área de trabajo de producción de destino. Para obtener información sobre las entidades de servicio, consulte Entidades de servicio para CI/CD.

Modificación de la agrupación para usar una entidad de servicio

Antes de realizar la implementación en producción, configure una concesión en el paquete que concede permiso a un principal de servicio. Puede configurar la concesión cuando se crea la aplicación o cuando se ejecuta la agrupación.

Para conceder permiso a la entidad de servicio cuando se crea la aplicación en el despliegue del paquete, modifique el paquete databricks.yml para definir una concesión para la aplicación. Use una sustitución de paquete para asignar el principal de servicio:

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

Como alternativa, defina un trabajo en la agrupación que configure una concesión cuando se ejecute la agrupación:

  1. Agregue un cuaderno llamado grant_notebook.ipynb con el siguiente contenido en una celda. Reemplace <schema-name> por un nombre de usuario de administrador.

    app_service_principal = dbutils.widgets.get("app_service_principal")
    spark.sql(f"GRANT ALL PRIVILEGES ON SCHEMA <schema-name> TO `{app_service_principal}`")
    
  2. Defina un trabajo en el databricks.yml del paquete para ejecutar un notebook digital que conceda permiso al principal de servicio. Use sustituciones de agrupación para asignar el valor de la entidad de servicio:

    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
    

Despliega el paquete actualizado

Ahora implemente la agrupación en el área de trabajo de producción y ejecute la aplicació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

Recursos adicionales