配置无服务器环境

本文介绍如何使用无服务器笔记本 的环境 端面板配置依赖项、无服务器预算策略、内存和环境版本。 此面板提供一个用于管理笔记本的无服务器设置的位置。 在此面板中配置的设置仅适用于笔记本连接到无服务器计算时。

若要展开 “环境 ”侧面板,请单击笔记本右侧 的环境 按钮。

具有无服务器预算策略的无服务器环境面板

有关在非笔记本作业任务上配置环境设置的信息,请参阅 为非笔记本作业任务配置环境

使用高内存无服务器计算

重要

此功能目前以公共预览版提供。

如果在笔记本中遇到内存不足错误,则可以将笔记本配置为使用更高的内存大小。 此设置会增加在笔记本中运行代码时使用的 REPL 内存的大小。 它不会影响 Spark 会话的内存大小。 内存较高的无服务器使用的DBU排放率高于标准内存。

  1. 在笔记本 UI 中,单击“ 环境 ”侧面板 环境侧面板
  2. 内存下,选择 高内存
  3. 单击“应用”。

此设置也适用于使用笔记本的内存首选项运行的笔记本作业任务。 更新笔记本中的内存首选项会影响下一个作业运行。

选择无服务器预算策略

重要

此功能目前以公共预览版提供。

无服务器预算策略允许组织对无服务器使用情况应用自定义标记,以实现精细计费属性。

如果工作区使用无服务器预算策略来属性无服务器使用情况,则可以选择要应用于笔记本的无服务器预算策略。 如果用户仅分配到一个无服务器预算策略,则默认选择该策略。

使用 “环境” 端面板将笔记本连接到无服务器计算后,可以选择无服务器预算策略:

  1. 在笔记本 UI 中,单击“ 环境 ”侧面板 环境侧面板
  2. 预算策略 下,选择要应用于笔记本的无服务器预算策略。
  3. 单击“应用”。

具有无服务器预算策略的无服务器笔记本环境面板

完成此设置后,所有笔记本使用情况都会继承无服务器预算策略的自定义标记。

注意

如果笔记本源自 Git 存储库,或者没有分配的 无服务器预算策略,则它将在下一次附加到无服务器计算时默认为上次选择的无服务器预算策略。

选择环境版本

环境版本允许无服务器工作负荷接收独立的引擎升级,而不会影响应用程序兼容性。 若要查看每个环境版本的详细信息,请参阅 无服务器环境版本。 Databricks 建议选择最新版本以获取最新的笔记本功能。

若要选择环境版本,请执行以下步骤:

  1. 在笔记本 UI 中,单击“ 环境 ”侧面板 环境侧面板
  2. “环境版本”下,选择一个版本。
  3. 单击“应用”。

将依赖项添加到笔记本

由于无服务器不支持计算策略或 init 脚本,因此必须使用 环境 端面板添加自定义库依赖项。 可以单独添加库,也可以使用可共享的基础环境安装多个库。

若要单独添加库依赖项,请执行以下操作:

  1. 在笔记本 UI 中,单击“ 环境 ”侧面板 环境侧面板
  2. 在“依赖项”部分中,单击“添加依赖项”,并在字段中输入库依赖项的路径。 可以在 requirements.txt 文件中指定有效的任何格式的依赖项。
  3. 单击“应用”。 这会在笔记本虚拟环境中安装依赖项,并重启 Python 进程。

使用无服务器计算的作业在运行笔记本代码之前安装笔记本的环境配置。 这意味着,在将笔记本计划为作业时,无需添加依赖项。

重要

请勿安装 PySpark 或任何将 PySpark 作为依赖项安装在无服务器笔记本上的库。 这样做会停止会话并导致出现错误。 如果发生这种情况,请删除库并重置环境

若要查看已安装的依赖项,请单击“环境”侧面板中的“已安装”选项卡。 还可以通过单击面板底部的 pip 日志 来获取笔记本环境的 pip 安装日志。

配置基本环境

基本环境是存储为工作区文件的 YAML 文件,或存储在指定其他环境依赖项的 Unity Catalog 卷上。 可以在笔记本之间共享基本环境。 若要配置基本环境,请执行以下操作:

  1. 创建一个 YAML 文件,该文件定义 Python 虚拟环境的设置。 以下示例 YAML 基于 MLflow 项目环境规范,它定义了一个具有几个库依赖项的基本环境:

    environment_version: '3'
    dependencies:
      - --index-url https://pypi.org/simple
      - -r "/Workspace/Shared/requirements.txt"
      - my-library==6.1
      - /Workspace/Shared/Path/To/simplejson-3.19.3-py3-none-any.whl
      - git+https://github.com/databricks/databricks-cli
    
  2. 将 YAML 文件作为工作区文件上传或上传到 Unity Catalog 卷。 请参阅导入文件将文件上传到 Unity Catalog 卷

  3. 在笔记本右侧,单击 环境 按钮以展开 环境 侧面板。 仅当笔记本连接到无服务器计算时,才会显示此按钮。

  4. 在“基本环境”字段中,输入上传的 YAML 文件的路径,或导航到该文件并选择它。

  5. 单击“应用”。 这会在笔记本虚拟环境中安装依赖项,并重启 Python 进程。

用户可以通过单独安装依赖项来替代基本环境中指定的依赖项。

重置环境依赖项

如果笔记本连接到无服务器计算,Databricks 会自动缓存笔记本虚拟环境的内容。 这意味着打开现有笔记本时,通常无需重新安装在 环境 侧面板中指定的 Python 依赖项,即使由于不活动而断开连接也是如此。

Python 虚拟环境缓存也适用于作业。 运行作业时,任何与该运行中已完成任务共享相同依赖项的任务都会更快,因为所需的依赖项已经可用。

注意

如果更改无服务器作业中使用的自定义 Python 包的实现,则还必须更新其版本号,以便作业能够选取最新的实现。

若要清除环境缓存并执行附加到无服务器计算的笔记本 环境 侧面板中指定的依赖项的全新安装,请单击 应用 旁边的箭头,然后单击 重置环境

如果安装了会中断或更改核心笔记本或 Apache Spark 环境的包,您应先删除这些有问题的包,然后重置环境。 笔记本的分离和重新附加不会清除整个环境缓存。

为非笔记本作业任务配置环境

对于作业任务类型(如 Python 脚本、Python 滚轮或 dbt 任务),库依赖项继承自无服务器环境版本。 若要查看已安装库的列表,请参阅正在使用的环境版本的“已安装的 Python 库”部分。 如果任务需要的 Python 库尚未安装,可以从工作区文件、Unity Catalog 或公共包存储库安装该库。

要在创建或编辑作业任务时添加一个库:

  1. “环境和库”下拉菜单中,单击Edit IconEdit Icon“默认”环境旁边的 ,或单击“+添加新环境”。

    编辑默认环境

  2. 环境版本 下拉列表中选择环境版本。 请参阅 无服务器环境版本。 Databricks 建议选择最新版本以获取最新功能。

  3. “配置环境”对话框中,单击“+添加库”

  4. “库”下的下拉菜单中选择依赖项的类型。

  5. “文件路径”文本框中,输入库的路径。

  • 对于工作区文件中的 Python Wheel,路径应该是绝对路径,以 /Workspace/ 开头。

  • 对于 Unity 目录卷中的 Python Wheel,路径应为 /Volumes/<catalog>/<schema>/<volume>/<path>.whl

  • 对于 requirements.txt 文件,请选择 PyPi 并输入 -r /path/to/requirements.txt

    添加任务库

  1. 单击“确认”“+添加库”以添加其他库。
  2. 如果要添加任务,请单击“ 创建任务”。 如果要编辑任务,请单击“ 保存”任务

配置默认 Python 包存储库

工作区管理员可以将工作区中的专用或经过身份验证的包存储库配置为无服务器笔记本和无服务器作业的默认 pip 配置。 这允许用户从内部 Python 存储库安装包,而无需显式定义 index-urlextra-index-url。 但是,如果在代码或笔记本中指定了这些值,则它们优先于工作区默认值。

此配置利用 Databricks 机密 安全地存储和管理存储库 URL 和凭据。 管理员可以使用工作区管理员设置页或使用预定义的机密范围和 Databricks CLI 机密命令来配置设置,REST API

为工作区设置默认依赖项

工作区管理员可以使用工作区管理员设置页添加或删除默认的 Python 包存储库。

  1. 作为工作区管理员,登录到 Databricks 工作区。
  2. 单击 Databricks 工作区顶部栏中的用户名,然后选择“设置”
  3. 单击“计算”选项卡
  4. 默认包存储库旁边,单击 管理
  5. (可选)添加或删除索引 URL、额外的索引 URL 或自定义 SSL 证书。
  6. 单击“保存”以保存更改。

注意

将无服务器计算重新附加到笔记本或重新运行无服务器作业后,将修改或删除机密。

使用机密 CLI 或 REST API 进行设置

若要使用 CLI 或 REST API 配置默认 Python 包存储库,请创建预定义的机密范围并配置访问权限,然后添加包存储库机密。

预定义的机密范围名称

工作区管理员可以在指定的机密范围内,通过预定义密钥设置默认 pip 索引 URL、额外索引 URL,以及身份验证令牌和机密。

  • 机密范围名称:databricks-package-management
  • 索引 URL 的密钥:pip-index-url
  • extra-index-url 的密钥:pip-extra-index-urls
  • SSL 认证内容的密钥:pip-cert

创建机密范围

可以使用 Databricks CLI 机密命令REST API创建机密范围。 创建机密范围后,配置访问控制列表以授予所有工作区用户读取访问权限。 这可确保存储库保持安全,并且不能由单个用户更改。 机密范围必须使用预定义的机密范围名称 databricks-package-management

databricks secrets create-scope databricks-package-management
databricks secrets put-acl databricks-package-management admins MANAGE
databricks secrets put-acl databricks-package-management users READ

添加 Python 包存储库机密

使用预定义的密钥名称添加 Python 包存储库详细信息,这三个字段都是可选的。

# Add index URL.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-index-url", "string_value":"<index-url-value>"}'

# Add extra index URLs. If you have multiple extra index URLs, separate them using white space.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-extra-index-urls", "string_value":"<extra-index-url-1 extra-index-url-2>"}'

# Add cert content. If you want to pip configure a custom SSL certificate, put the cert file content here.
databricks secrets put-secret --json '{"scope": "databricks-package-management", "key": "pip-cert", "string_value":"<cert-content>"}'

修改或删除专用 PyPI 存储库机密

若要修改 PyPI 存储库机密,请使用 put-secret 命令。 若要删除 PyPI 存储库机密,请使用 delete-secret,如下所示:

# delete secret
databricks secrets delete-secret databricks-package-management pip-index-url

databricks secrets delete-secret databricks-package-management pip-extra-index-urls

databricks secrets delete-secret databricks-package-management pip-cert

# delete scope
databricks secrets delete-scope databricks-package-management