Databricks Apps 配置

重要

Databricks 应用以公共预览版提供

本文详细介绍 Databricks Apps 环境中自动配置的设置,并介绍如何定义应用所需的自定义配置。

Databricks 应用环境设置多个环境变量,例如运行应用的 Azure Databricks 工作区的 URL,以及执行应用身份验证所需的值。 但是,有时你的应用需要其他自定义变量。 例如,可能需要一个自定义命令来运行应用或参数以连接到 SQL 仓库。 对于这些自定义配置参数,请使用 app.yaml 该文件。

使用 app.yaml 文件配置 Databricks 应用

注意

应用配置文件可以使用 .yaml.yml 扩展。

若要为应用定义自定义配置,请将文件添加到 app.yaml 项目。 下表显示了可在文件中定义的 app.yaml 设置,后跟示例配置文件。

app.yaml 设置
command

类型:sequence

用于运行应用的可选参数集。 如果需要自定义命令来运行应用,请使用此设置。 默认值为 [python, app.py].

该命令不在 shell 中运行,因此环境中设置的任何值都不会传递到应用。 如果应用需要其他参数才能运行,请使用结构 env

此设置是可选的。
env

类型:list

用于定义要传递给应用的环境变量的可选键值对列表的顶级密钥。 value可以是实际参数值,也可以是存储该值的位置的引用。 列表中的有效项包括:

- name:环境变量的名称。
- 以下项之一:
- value:环境变量的值。
- valueFrom:对于外部定义的值,包含该值的源的名称。 例如,机密或包含该值的数据库表的名称。

此设置是可选的。

Streamlit 应用示例app.yaml

以下示例 app.yaml 配置文件运行 Streamlit 应用,传入 SQL 仓库 ID 和参数的值 STREAMLIT_GATHER_USAGE_STATS

command: [
  "streamlit",
  "run",
  "app.py"
]
env:
  - name: "DATABRICKS_WAREHOUSE_ID"
    value: "quoz2bvjy8bl7skl"
  - name: "STREAMLIT_GATHER_USAGE_STATS"
    value: "false"

Flask 应用示例app.yaml

以下示例 app.yaml 配置文件使用 Gunicorn 服务器运行 Flask 应用,并设置包含 Unity 目录卷的路径的环境变量:

command:
  - gunicorn
  - app:app
  - -w
  - 4
env:
  - name: "VOLUME_URI"
    value: "/Volumes/catalog-name/schema-name/dir-name"

引用 Databricks 机密

若要引用配置为应用的资源依赖项的机密,请在配置部分valueFrom: <dependency_name>进行设置。envapp.yaml 替换为 dependency_name 机密资源的配置中的资源密钥值。 若要了解有关 Databricks 应用资源依赖项的详细信息,请参阅如何实现将 Databricks 应用与 Azure Databricks 服务集成?。 若要详细了解如何管理 Databricks 机密,请参阅 “管理机密”。

以下示例 app.yaml 引用配置为资源依赖项的机密:

command: [
  "python",
  "app.py"
]
env:
  - name: "SECRET_KEY"
    valueFrom: "secret-name"

Databricks Apps 环境变量

Databricks Apps 环境中自动设置以下变量,并可供所有应用使用。 如果需要设置其他环境变量,请将其添加到 app.yaml 文件

变量 说明
DATABRICKS_APP_NAME 正在运行的应用的名称。
DATABRICKS_WORKSPACE_ID 应用所属的 Databricks 工作区的唯一 ID。
DATABRICKS_HOST 应用所属的 Databricks 工作区的 URL。
DATABRICKS_APP_PORT 应用应侦听的网络端口。
DATABRICKS_CLIENT_ID 分配给应用的 Databricks 服务主体的客户端 ID。
DATABRICKS_CLIENT_SECRET 分配给应用的 Databricks 服务主体的 OAuth 机密。

Streamlit 的默认环境变量

Databricks 应用环境中自动配置以下特定于 Streamlit 的变量,并可供使用 Streamlit 框架的 Databricks 应用使用:

变量 说明
STREAMLIT_SERVER_ADDRESS Streamlit 要使用的服务器地址。 此值设置为 0.0.0.0,不能重写。
STREAMLIT_SERVER_PORT Streamlit 使用的端口。 此值设置为DATABRICKS_APP_PORT,不能重写。
STREAMLIT_SERVER_ENABLE_XSRF_PROTECTION 由于 Databricks Apps 反向代理可防范跨站点请求伪造(XSRF),因此设置为 false
STREAMLIT_SERVER_ENABLE_CORS 由于 Databricks Apps 反向代理可防止跨域资源共享(CORS),因此设置为 false
STREAMLIT_SERVER_HEADLESS 这设置为 true so Streamlit 运行,无需在启动时打开浏览器窗口。
STREAMLIT_BROWSER_GATHER_USAGE_STATS 此设置设置为 false 阻止将用户统计信息发送到 Streamlit。