若要使第三方或自定义代码可供在你的群集上运行的笔记本和作业使用,你可以安装库。 可以用 Python、Java、Scala 和 R 编写库。你可以上传 Python、Java 和 Scala 库,将其指向 PyPI、Maven 和 CRAN 存储库中的外部包。

Azure Databricks 包含 Databricks Runtime 中的许多常用库。 若要查看 Databricks Runtime 中包含哪些库,请查看你的 Databricks Runtime 版本的 Databricks Runtime 发行说明中的“系统环境”小节。

注意

Azure 支持可帮助隔离和解决与 Azure Databricks 安装和维护的库相关的问题。 对于第三方组件(包括库),Azure 提供商业上合理的支持,以帮助你进一步排查问题。 Azure 支持会尽最大努力提供帮助,并且可能能够解决此问题。 对于托管在 Github 上的开源连接器和项目,建议在 Github 上提出和跟进问题。 标准支持案例提交流程不支持通过 shade 解决 jar 冲突或构建 Python 库等开发工作:需要通过咨询更快解决这些问题。 支持人员可能会邀请你利用其他开源技术渠道,你可以通过这些渠道找到在该技术方面拥有深入专业知识的资源。 有几个社区站点;其中两个是有关 Azure Databricks 的 Microsoft Q&A 页Stack Overflow

群集范围的库

可以在群集上安装库,以便群集上运行的所有 notebook 和作业都可以使用这些库。 Databricks 支持 Python、JAR 和 R 库。 请参阅群集库

可以直接从以下源安装群集库:

并非所有位置都支持所有类型的库或所有计算配置。 参阅针对上传库的建议,了解配置建议。

重要

使用 Databricks Runtime 14.3 LTS 及更低版本时,可以从 DBFS 安装库。 但任何工作区用户都可以修改存储在 DBFS 中的库文件。 为了提高 Azure Databricks 工作区中的库的安全性,默认情况下,在 Databricks Runtime 15.0 及更高版本中,在 DBFS 根目录中存储库文件已弃用和禁用。 请参阅已弃用并已默认禁用在 DBFS 根目录中存储库的功能

相反,Databricks 建议将库上传到工作区文件或 Unity Catalog 卷,或使用库包存储库。 如果工作负载不支持这些模式,还可以使用存储在云对象存储中的库。

有关完整的库支持信息,请参阅 Python 库支持Java 和 Scala 库支持以及 R 库支持

有关上传库的建议

Databricks 支持大多数 Python、JAR 和 R 库的配置安装,但有些方案不受支持。 建议将库上传到支持使用共享访问模式安装到计算中的源位置,因为这是所有工作负载的推荐模式。 请参阅访问模式。 使用共享访问模式计划工作流时,请使用服务主体运行工作流

重要

仅当共享访问模式不支持所需功能时,才使用单用户访问模式进行计算。 无隔离共享访问模式是 Databricks 上的旧配置。

下表提供了按 Databricks Runtime 版本和 Unity Catalog 启用状态组织的建议。

配置 建议
包含 Unity Catalog 的 Databricks Runtime 13.3 LTS 及更高版本 使用 Unity Catalog 共享访问模式在计算上安装库,并为所有帐户用户授予读取权限。

如果适用,需要将 Maven 坐标和 JAR 库路径添加到允许列表
不包含 Unity Catalog 的 Databricks Runtime 11.3 LTS 及更高版本 使用工作区文件安装库。 (文件大小限制为 500 MB。)
Databricks Runtime 10.4 LTS 及更低版本 使用云对象存储安装库。

Python 库支持

下表指示基于库源位置的不同群集访问模式的 Python wheel 文件的 Databricks Runtime 版本兼容性。 请参阅 Databricks Runtime 发行说明版本和兼容性访问模式

凭借 Databricks Runtime 15.0 及更高版本,可以使用 requirements.txt文件 来管理 Python 依赖项。 这些文件可以上传到任何受支持的源位置。

注意

Databricks Runtime 14.0 及更高版本不支持安装 Python egg 文件。 请改用 Python wheel 文件或从 PyPI 安装包。

共享访问模式 单用户访问模式 无隔离共享访问模式(旧版)
PyPI 13.3 LTS 及更高版本 所有支持的 Databricks Runtime 版本 所有支持的 Databricks Runtime 版本
工作区文件 13.3 LTS 及更高版本 13.3 LTS 及更高版本 14.1 及更高版本
13.3 LTS 及更高版本 13.3 LTS 及更高版本 不支持
云存储 13.3 LTS 及更高版本 所有支持的 Databricks Runtime 版本 所有支持的 Databricks Runtime 版本
DBFS(不推荐) 不支持 14.3 及更低版本 14.3 及更低版本

Java 和 Scala 库支持

下表指示基于库源位置的不同群集访问模式的 JAR 文件的 Databricks Runtime 版本兼容性。 请参阅 Databricks Runtime 发行说明版本和兼容性访问模式

注意

共享访问模式需要管理员向 allowlist 添加 Maven 坐标和 JAR 库的路径。 请参阅将共享计算上的库和 init 脚本加入允许列表

共享访问模式 单用户访问模式 无隔离共享访问模式(旧版)
Maven 13.3 LTS 及更高版本 所有支持的 Databricks Runtime 版本 所有支持的 Databricks Runtime 版本
工作区文件 不支持 不支持 14.1 及更高版本
13.3 LTS 及更高版本 13.3 LTS 及更高版本 不支持
云存储 13.3 LTS 及更高版本 所有支持的 Databricks Runtime 版本 所有支持的 Databricks Runtime 版本
DBFS(不推荐) 不支持 14.3 及更低版本 14.3 及更低版本

R 库支持

下表指示不同群集访问模式的 CRAN 包的 Databricks Runtime 版本兼容性。 请参阅 Databricks Runtime 发行说明版本和兼容性访问模式

共享访问模式 单用户访问模式 无隔离共享访问模式(旧版)
CRAN 不支持 所有支持的 Databricks Runtime 版本 所有支持的 Databricks Runtime 版本

笔记本范围的库

笔记本范围的库可用于 Python 和 R,你可通过它们安装库并创建笔记本会话范围的环境。 这些库不会影响在同一群集上运行的其他笔记本。 笔记本范围的库不会保留,且必须对每个会话重新安装它们。 需要对特定笔记本使用自定义环境时,请使用笔记本范围的库。

注意

无法在笔记本级别安装 JAR。

重要

工作区库已被弃用,不得使用。 请参阅工作区库(旧版)。 但是,将库存储为工作区文件与存储为工作区库是不同的,但仍然完全受到支持。 可以将存储为工作区文件的库直接安装到计算或作业任务。

Python 环境管理

下表简要列出了可用于在 Azure Databricks 中安装 Python 的选项。

注意

  • 使用基于 Conda 的环境的自定义容器笔记本范围的库以及 Databricks Runtime 10.1 及更高版本中的群集库不兼容。 Azure Databricks 建议改为直接在映像中安装库或使用初始化脚本。 若要在这些场景中继续使用群集库,可以将 Spark 配置spark.databricks.driverNfs.clusterWidePythonLibsEnabled设置为 false。 2021 年 12 月 31 日及之后将不再提供对 Spark 配置的支持。
Python 包源 通过 %pip 使用笔记本范围的库 群集库 通过作业 API 使用作业库
PyPI 请使用 %pip install。 请查看示例 选择 PyPI 作为源 将新的 pypi 对象添加到作业库中,并指定 package 字段。
专用 PyPI 镜像,例如 Nexus 或 Artifactory %pip install--index-url 选项一起使用。 可使用机密管理功能。 请查看示例 不支持。 不支持。
具有原始源的 VCS,例如 GitHub 使用 %pip install 并指定存储库 URL 作为包名称。 请查看示例 选择 PyPI 作为源,并指定存储库 URL 作为包名称。 将新的 pypi 对象添加到作业库中,并指定存储库 URL 作为 package 字段。
使用原始源的专用 VCS 使用 %pip install,并指定具有基本身份验证的存储库 URL 作为包名称。 可使用机密管理功能。 请查看示例 不支持。 不支持。
文件路径 请使用 %pip install。 请参阅[示例](/libraries/notebooks-python-libraries.md#workspace-files)。 选择作为源的文件路径/ADLS 将新的 eggwhl 对象添加到作业库中,并指定文件路径作为 package 字段。
Azure Data Lake Storage Gen2 与预签名 URL 一起使用 %pip install。 不支持使用 Azure Data Lake Storage Gen2 协议 abfss:// 的路径。 选择作为源的文件路径/ADLS 将新的 eggwhl 对象添加到作业库中,并指定 Azure Data Lake Storage Gen2 路径作为 package 字段。

Python 库优先级

可能会遇到这种情况:需要替代内置库的版本,或者自定义库的名称与群集上安装的另一个库发生冲突。 运行 import <library> 时,将导入高优先级的库。

重要

存储在工作区文件中的库具有不同的优先级,具体取决于它们添加到 Python sys.path 的方式。 Databricks Repos 在所有其他库之前将当前工作目录添加到路径中,而 Repos 之外的笔记本在安装其他库之后将当前工作目录添加到路径中。 如果你手动将工作区目录附加到路径中,这些目录的优先级始终最低。

以下列表按优先级从高到低排序。 在此列表中,数字越小表示优先级越高。

  1. 当前工作目录中的库(仅限 Repos)。
  2. Repo(Git 文件夹)根目录(仅 Repo)中的库。
  3. 笔记本范围的库(笔记本中的 %pip install)。
  4. 群集库(使用 UI、CLI 或 API)。
  5. Databricks Runtime 中包含的库。
    • 使用 init 脚本安装的库可能会在内置库之前或之后解析,具体取决于其安装方式。 Databricks 不建议使用 init 脚本安装库。
  6. 当前工作目录中的库(不在 Repos 中)。
  7. 已附加到 sys.path 的工作区文件。