本页介绍如何在水平缩放的 Databricks 应用上选择退出预安装的Python库,管理自己的依赖项,以及如何稍后重新打开预安装的库。 选择退出仅适用于从标准应用转换的水平缩放应用。 请参阅 将标准应用转换为使用水平扩缩。 水平扩展处于 Beta 阶段。
将标准应用转换为水平缩放时,Azure Databricks将转换后的应用固定到预安装的Python库以便应用的现有导入保持正常运行。 如果选择退出此方案,应用将在纯净的基础操作系统镜像上运行,并且需要由您自行声明所有库依赖。
选择退出预安装的库
选择退出后,Azure Databricks 将基于干净的基础操作系统映像构建你的下一次部署。
预安装的库将不再可用,除非你在requirements.txt或pyproject.toml中声明它们。
取消订阅:
- 在应用详细信息页上,单击“ 编辑”。
- 在 Configure 步骤中,清除使用预安装Python库复选框。
- 单击“ 保存”。 当前正在运行的部署不受影响。
- 请从 部署 选项卡中重新部署您的应用。此次新的部署将基于干净的基础操作系统映像进行构建。
建议的工作流
依赖项可能以可传递方式包括预安装的库,因此并不总是清楚应用需要哪些库。 在选择退出生产之前,在测试应用中查找缺少的库:
- 创建新的 水平缩放应用。 新的可横向扩展应用已经运行在干净的基础操作系统映像上,因此这符合您在选择退出后的目标状态。
- 将生产应用的源部署到测试应用。 更新
requirements.txt(或pyproject.toml)并重新部署,直到测试应用启动、提供请求并通过测试。 - 将最终依赖项声明复制到生产应用的源中。
- 在生产环境中的应用上,按照 停用预安装库 中的步骤操作,并部署更新后的源代码。
生产环境会继续运行在预装了这些库的镜像上,直到你的新部署通过健康检查,因此,这种方法可以在你排查测试应用缺失的依赖项期间避免停机。
在选择退出后解决错误
选择退出后,最常见的故障是在应用启动时出现 ModuleNotFoundError,其原因是你的代码从预安装集合中隐式导入了某个框架或库。 解决方法:
- 打开应用详细信息页上的“ 日志 ”选项卡。
- 在生成或运行时日志中查找缺少的模块名称。
- 将相应的包添加到
requirements.txt(或pyproject.toml) 并重新部署。
如果应用进程在启动后的头几秒钟内保持运行状态,则新部署只会替换正在运行的部署。 因缺少导入项而立即崩溃的选择退出模式部署永远不会接管流量,在你修复依赖项列表期间,流量会继续留在之前正常工作的部署上。 启动检查较为粗略,因此在选择停用该检查后,应测试应用是否确实能够处理请求,而不要依赖该检查来发现有问题的部署。
重新打开预安装的库
选择退出后返回到预安装的库:
- 在应用详细信息页上,单击“ 编辑”。
- 在 Configure 步骤中,选中“使用预安装的Python库复选框。
- 单击“ 保存”。
- 从 Deployments 选项卡再次部署您的应用。此次新部署将基于已预装这些库的基础镜像进行构建。
你的 requirements.txt 和 pyproject.toml 将继续适用,因此你在选择退出期间添加的任何显式声明都会被保留。
注释
将水平缩放的应用转换 回标准应用 也会还原预安装的库:无论是否选择退出,标准应用都会重新生成。如果以后将应用转换为水平缩放,它将包括预安装的库,直到再次选择退出。