从对象存储安装库

本文将指导你完成从 Azure Databricks 上的云对象存储安装库所需的步骤。

注意

本文将云对象存储作为一般概念,并假定你使用 URI 直接与存储在对象存储中的数据进行交互。 Databricks 建议使用 Unity Catalog 卷来配置对云对象存储中文件的访问权限。 请参阅什么是 Unity Catalog 卷?

可以将自定义 JAR 和 Python Whl 库存储在云对象存储中,而不是将它们存储在 DBFS 根目录中。 有关完整的库兼容性详细信息,请参阅群集范围的库

重要

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

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

将库加载到对象存储

可以像加载其他文件一样,将库加载到对象存储中。 你必须在云提供商中具有适当的权限,才能创建新的对象存储容器或将文件加载到云对象存储中。

授予对对象存储的只读权限

Databricks 建议为与库安装相关的所有特权配置只读权限。

Azure Databricks 允许向控制对云对象存储中数据的访问的单个群集分配安全权限。 可以扩展这些策略,以添加对包含库的云对象存储的只读访问权限。

注意

在 Databricks Runtime 12.2 LTS 及更低版本中,无法在使用具有共享访问模式的群集时加载 JAR 库。 在Databricks Runtime 13.3 LTS 及更高版本中,必须将 JAR 库添加到 Unity Catalog 允许列表。 请参阅将共享计算上的库和 init 脚本加入允许列表

Databricks 建议使用 Microsoft Entra ID 服务主体来管理对存储在 Azure Data Lake Storage Gen2 中的库的访问。 请使用以下链接的文档完成此设置:

  1. 创建对所需 Blob 具有读取和列出权限的服务主体。 请参阅使用服务主体和 Microsoft Entra ID (Azure Active Directory) 访问存储

  2. 使用机密保存凭据。 请参阅机密

  3. 请在创建群集时在 Spark 配置和环境变量中设置属性,如以下示例所示:

    Spark 配置:

    spark.hadoop.fs.azure.account.auth.type.<storage-account>.dfs.core.chinacloudapi.cn OAuth
    spark.hadoop.fs.azure.account.oauth.provider.type.<storage-account>.dfs.core.chinacloudapi.cn org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider
    spark.hadoop.fs.azure.account.oauth2.client.id.<storage-account>.dfs.core.chinacloudapi.cn <application-id>
    spark.hadoop.fs.azure.account.oauth2.client.secret.<storage-account>.dfs.core.chinacloudapi.cn {{secrets/<secret-scope>/<service-credential-key>}}
    spark.hadoop.fs.azure.account.oauth2.client.endpoint.<storage-account>.dfs.core.chinacloudapi.cn https://login.chinacloudapi.cn/<tenant-id>/oauth2/token
    

    环境变量:

    SERVICE_CREDENTIAL={{secrets/<secret-scope>/<service-credential-key>}}
    
  4. (可选)使用 azcopyAzure CLI 重构 init 脚本。

    可以在 init 脚本中引用配置群集期间设置的环境变量,以传递作为机密存储的凭据进行验证。

将库安装到群集

若要将存储在云对象存储中的库安装到群集,请完成以下步骤:

  1. 从群集 UI 中的列表中选择一个群集。
  2. 选择“”选项卡。
  3. 选择“文件路径/ADLS”选项。
  4. 提供库对象的完整 URI 路径(例如 abfss://container-name@storage-account-name.dfs.core.chinacloudapi.cn/path/to/library.whl)。
  5. 单击“安装” 。

还可以使用 REST APICLI 安装库。

将库安装到笔记本

可以使用 %pip 安装存储在对象存储中的自定义 Python wheel 文件,范围限定为笔记本隔离的 SparkSession。 若要使用此方法,必须将库存储在可公开读取的对象存储中,或使用预签名 URL。

请参阅作用域为笔记本的 Python 库

注意

无法在笔记本中安装 JAR 库。 必须在群集级别安装 JAR 库。