安装笔记本依赖项
可以使用“环境”侧面板为无服务器笔记本安装 Python 依赖项。 此面板提供了一个用于编辑、查看和导出笔记本库要求的位置。 可以使用基本环境或单独添加这些依赖项。
对于非笔记本任务,请参阅为非笔记本任务配置环境和依赖项。
重要
请勿安装 PySpark 或任何将 PySpark 作为依赖项安装在无服务器笔记本上的库。 这样做会停止会话并导致出现错误。 如果发生这种情况,请删除库并重置环境。
配置基本环境
基本环境是存储为工作区文件的 YAML 文件,或存储在指定其他环境依赖项的 Unity Catalog 卷上。 可以在笔记本之间共享基本环境。 若要配置基本环境,请执行以下操作:
创建一个 YAML 文件,该文件定义 Python 虚拟环境的设置。 以下示例 YAML 基于 MLflow 项目环境规范,它定义了一个具有几个库依赖项的基本环境:
client: "1" 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
将 YAML 文件作为工作区文件上传或上传到 Unity Catalog 卷。 请参阅导入文件或将文件上传到 Unity Catalog 卷。
在笔记本右侧,单击
按钮以展开 环境 侧面板。 仅当笔记本连接到无服务器计算时,才会显示此按钮。
在“基本环境”字段中,输入上传的 YAML 文件的路径,或导航到该文件并选择它。
单击“应用”。 这会在笔记本虚拟环境中安装依赖项,并重启 Python 进程。
用户可以通过单独安装依赖项来替代基本环境中指定的依赖项。
配置笔记本环境
还可以使用 环境 侧面板,在连接至无服务器计算环境的笔记本上安装依赖项。
- 在笔记本右侧,单击
按钮以展开 环境 侧面板。 仅当笔记本连接到无服务器计算时,才会显示此按钮。
- 从 环境版本 下拉列表中选择环境版本。 请参阅 无服务器环境版本。 Databricks 建议选择最新版本以获取最新的笔记本功能。
- 在“依赖项”部分中,单击“添加依赖项”,并在字段中输入库依赖项的路径。 可以在 requirements.txt 文件中指定有效的任何格式的依赖项。
- 单击“应用”。 这会在笔记本虚拟环境中安装依赖项,并重启 Python 进程。
注意
使用无服务器计算的作业在执行笔记本代码之前将安装笔记本的环境规范。 这意味着在将笔记本安排为作业时无需添加依赖项。 请参阅配置环境和依赖项。
查看已安装的依赖项和 pip 日志
若要查看已安装的依赖项,请在笔记本的 环境 面板中单击 已安装。 还可以通过单击面板底部的 pip 日志 来获取笔记本环境的 pip 安装日志。
重置环境
如果笔记本连接到了无服务器计算,Databricks 会自动缓存笔记本虚拟环境的内容。 这意味着打开现有笔记本时,通常无需重新安装在 环境 侧面板中指定的 Python 依赖项,即使由于不活动而断开连接也是如此。
Python 虚拟环境缓存也适用于作业。 运行作业时,任何与该运行中已完成任务共享相同依赖项的任务都会更快,因为所需的依赖项已经可用。
注意
如果更改无服务器作业中使用的自定义 Python 包的实现,则还必须更新其版本号,以便作业能够选取最新的实现。
若要清除环境缓存并执行附加到无服务器计算的笔记本 环境 侧面板中指定的依赖项的全新安装,请单击 应用 旁边的箭头,然后单击 重置环境。
注意
如果安装会中断或更改核心笔记本或 Apache Spark 环境的包,请重置虚拟环境。 从无服务器计算中拆离笔记本并重新附加它不一定会清除整个环境缓存。 重置环境会重新安装在 环境 侧面板中指定的所有依赖项,因此请确保在重置之前删除有问题的包。
为非笔记本任务配置环境和依赖项
对于其他受支持的任务类型(如 Python 脚本、Python wheel 或 dbt 任务),默认环境包括已安装的 Python 库。 若要查看已安装库的列表,请参阅 正在使用的客户端版本的“已安装的 Python 库 ”部分。 请参阅 无服务器环境版本。 如果任务需要的 Python 库尚未安装,可以从工作区文件、Unity Catalog 卷或公共包存储库安装该库。 创建或编辑任务时添加库:
在“环境和库”下拉菜单中,单击
“默认”环境旁边的 ,或单击“+添加新环境”。
从 环境版本 下拉列表中选择环境版本。 请参阅 无服务器环境版本。 Databricks 建议选择最新版本以获取最新功能。
在“配置环境”对话框中,单击“+添加库”。
从“库”下的下拉菜单中选择依赖项的类型。
在“文件路径”文本框中,输入库的路径。
对于工作区文件中的 Python Wheel,路径应该是绝对路径,以
/Workspace/
开头。对于 Unity 目录卷中的 Python Wheel,路径应为
/Volumes/<catalog>/<schema>/<volume>/<path>.whl
。对于
requirements.txt
文件,请选择 PyPi 并输入-r /path/to/requirements.txt
。
- 单击“确认”或“+添加库”以添加其他库。
- 如要添加任务,请单击“创建任务”。 如要编辑任务,请单击“保存任务”。
配置默认 Python 包存储库
管理员可以将工作区中的专用或经过身份验证的包存储库配置为无服务器笔记本和无服务器作业的默认 pip 配置。 这允许用户从内部 Python 存储库安装包,而无需显式定义 index-url
或 extra-index-url
。 但是,如果在代码或笔记本中指定了这些值,则它们优先于工作区默认值。
此配置利用 Databricks 机密 安全地存储和管理存储库 URL 和凭据。 管理员可以使用工作区管理员设置页或使用预定义的机密范围和 Databricks CLI 机密命令来配置设置, 或 REST API。
使用工作区管理员设置页进行设置
工作区管理员可以使用工作区管理员设置页添加或删除默认的 Python 包存储库。
- 作为工作区管理员,登录到 Databricks 工作区。
- 单击 Databricks 工作区顶部栏中的用户名,然后选择“设置”。
- 单击“计算”选项卡。
- 在 默认包存储库旁边,单击 管理。
- (可选)添加或删除索引 URL、额外的索引 URL 或自定义 SSL 证书。
- 单击“保存”以保存更改。
注意
将无服务器计算重新附加到笔记本或重新运行无服务器作业后,将修改或删除机密。
使用机密 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