图书馆

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

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

备注

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

计算范围的库

可以在计算资源上安装库,以便所有在此计算资源上运行的笔记本和任务都能使用这些库。 Databricks 支持 Python、JAR 和 R 库。 请参阅群集库

可以直接从以下源安装计算范围的库:

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

重要

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

相反,Databricks 建议将所有库(包括 Python 库、JAR 文件和 Spark 连接器)上传到工作区文件或 Unity Catalog 卷,或使用库包存储库。 如果工作负载不支持这些模式,还可以使用存储在云对象存储中的库。

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

有关上传库的建议

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

重要

仅当标准访问模式不支持所需的功能时,才将计算与专用访问模式(以前是单用户访问模式)一起使用。 无隔离共享访问模式是 Databricks 上的旧配置,不推荐。

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

配置 建议
包含 Unity Catalog 的 Databricks Runtime 13.3 LTS 及更高版本 使用共享访问模式在计算设备上从 Unity Catalog 安装库,并对所需的用户具有 GRANT READ。
如果适用,需要将 Maven 坐标和 JAR 库路径添加到允许列表
Databricks Runtime 11.3 LTS 及更高版本,不包含 Unity Catalog 工作区文件中安装库。 (文件大小限制为 500 MB。)
Databricks Runtime 10.4 LTS 及更低版本 使用云对象存储安装库。

Python 库支持

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

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

注意

仅 Databricks Runtime 13.3 LTS 及更低版本支持安装 Python egg 文件,仅适用于专用或无隔离共享访问模式。 此外,无法安装卷上的 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 发行说明版本和兼容性访问模式

注意

标准访问模式要求管理员将 JAR 库的 Maven 坐标和路径添加到 allowlist。 请参阅使用标准访问模式(原共享访问模式)的计算上的允许列表库和 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 版本

安装程序标识

从工作区文件或 Unity Catalog 卷中安装库时,可能会根据计算访问模式将某个标识与安装相关联。 该标识必须对库文件具有读取访问权限。

标准访问模式 专用访问模式 无隔离共享访问模式(旧版)
安装库的用户的标识 专职负责人的身份 无身份

笔记本范围的库

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

注意

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

重要

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

Python 环境管理

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

注意

  • 使用基于 Conda 的环境的自定义容器笔记本范围的库以及 Databricks Runtime 10.4 LTS 及更高版本中的计算库不兼容。 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 选项一起使用。 可使用机密管理功能。 请查看示例 不支持。 不支持。
像 GitHub 这样的 VCS,具有原始源码 使用 %pip install 并指定存储库 URL 作为包名称。 请查看示例 选择 PyPI 作为源,并指定存储库 URL 作为包名称。 将新的 pypi 对象添加到作业库中,并指定存储库 URL 作为 package 字段。
使用原始源代码的专用版本控制系统 使用 %pip install,并指定具有基本身份验证的存储库 URL 作为包名称。 可使用机密管理功能。 请查看示例 不支持。 不支持。
文件路径 请使用 %pip install。 请查看示例 选择作为源的文件路径/ADLS 将新的 eggwhl 对象添加到作业库中,并指定文件路径作为 package 字段。
Azure Data Lake Storage Gen2 %pip install 与预签名 URL 一起使用。 不支持使用 Azure Data Lake Storage Gen2 协议 abfss:// 的路径。 选择作为源的文件路径/ADLS 将新的 eggwhl 对象添加到作业库中,并指定 Azure Data Lake Storage Gen2 路径作为 package 字段。

Python 库优先级

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

重要

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

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

  1. 当前工作目录中的库(仅限 Git 文件夹)。

  2. Git 文件夹根目录中的库(仅限 Git 文件夹)。

  3. 笔记本范围的库(笔记本中的 %pip install)。

  4. 计算范围的库(使用 UI、CLI 或 API)。

  5. Databricks Runtime 中包含的库。

    • 使用 init 脚本安装的库可能会在内置库之前或之后解析,具体取决于其安装方式。 Databricks 不建议使用 init 脚本安装库。
  6. 当前工作目录中的库(不在 Git 文件夹中)。

  7. 已附加到 sys.path 的工作区文件。