选择不使用 Databricks 应用中预安装的 Python 库

本页介绍如何在水平缩放的 Databricks 应用上选择退出预安装的Python库,管理自己的依赖项,以及如何稍后重新打开预安装的库。 选择退出仅适用于从标准应用转换的水平缩放应用。 请参阅 将标准应用转换为使用水平扩缩。 水平扩展处于 Beta 阶段。

将标准应用转换为水平缩放时,Azure Databricks将转换后的应用固定到预安装的Python库以便应用的现有导入保持正常运行。 如果选择退出此方案,应用将在纯净的基础操作系统镜像上运行,并且需要由您自行声明所有库依赖。

选择退出预安装的库

选择退出后,Azure Databricks 将基于干净的基础操作系统映像构建你的下一次部署。 预安装的库将不再可用,除非你在requirements.txtpyproject.toml中声明它们。

取消订阅:

  1. 在应用详细信息页上,单击“ 编辑”。
  2. Configure 步骤中,清除使用预安装Python库复选框。
  3. 单击“ 保存”。 当前正在运行的部署不受影响。
  4. 请从 部署 选项卡中重新部署您的应用。此次新的部署将基于干净的基础操作系统映像进行构建。

依赖项可能以可传递方式包括预安装的库,因此并不总是清楚应用需要哪些库。 在选择退出生产之前,在测试应用中查找缺少的库:

  1. 创建新的 水平缩放应用。 新的可横向扩展应用已经运行在干净的基础操作系统映像上,因此这符合您在选择退出后的目标状态。
  2. 将生产应用的源部署到测试应用。 更新 requirements.txt (或 pyproject.toml)并重新部署,直到测试应用启动、提供请求并通过测试。
  3. 将最终依赖项声明复制到生产应用的源中。
  4. 在生产环境中的应用上,按照 停用预安装库 中的步骤操作,并部署更新后的源代码。

生产环境会继续运行在预装了这些库的镜像上,直到你的新部署通过健康检查,因此,这种方法可以在你排查测试应用缺失的依赖项期间避免停机。

在选择退出后解决错误

选择退出后,最常见的故障是在应用启动时出现 ModuleNotFoundError,其原因是你的代码从预安装集合中隐式导入了某个框架或库。 解决方法:

  1. 打开应用详细信息页上的“ 日志 ”选项卡。
  2. 在生成或运行时日志中查找缺少的模块名称。
  3. 将相应的包添加到 requirements.txt (或 pyproject.toml) 并重新部署。

如果应用进程在启动后的头几秒钟内保持运行状态,则新部署只会替换正在运行的部署。 因缺少导入项而立即崩溃的选择退出模式部署永远不会接管流量,在你修复依赖项列表期间,流量会继续留在之前正常工作的部署上。 启动检查较为粗略,因此在选择停用该检查后,应测试应用是否确实能够处理请求,而不要依赖该检查来发现有问题的部署。

重新打开预安装的库

选择退出后返回到预安装的库:

  1. 在应用详细信息页上,单击“ 编辑”。
  2. Configure 步骤中,选中“使用预安装的Python库复选框。
  3. 单击“ 保存”。
  4. Deployments 选项卡再次部署您的应用。此次新部署将基于已预装这些库的基础镜像进行构建。

你的 requirements.txtpyproject.toml 将继续适用,因此你在选择退出期间添加的任何显式声明都会被保留。

注释

将水平缩放的应用转换 回标准应用 也会还原预安装的库:无论是否选择退出,标准应用都会重新生成。如果以后将应用转换为水平缩放,它将包括预安装的库,直到再次选择退出。