Databricks 资产捆绑包的库依赖项

重要

此功能目前以公共预览版提供。

本文介绍用于声明 Databricks 资产捆绑包的库依赖项的语法。 捆绑包支持以编程方式管理 Azure Databricks 工作流。 请参阅什么是 Databricks 资产捆绑包?

除了笔记本,Azure Databricks 作业可能依赖于库才能按预期运行。 用于本地开发的 Databricks 资产捆绑包依赖项在捆绑包项目根目录的 requirements*.txt 文件中指定,但作业任务库依赖项在捆绑包配置文件中声明,并且通常是作业任务类型规范的一部分。

捆绑包为 Azure Databricks 作业提供以下库依赖项的支持:

  • Python wheel 文件
  • JAR 文件(Java 或 Scala)
  • PyPI、Maven 或 CRAN 包

注意

是否支持库取决于作业和库源的群集配置。 有关完整的库支持信息,请参阅“”。

Python wheel 文件

若要将 Python Wheel 文件添加到作业任务,请在 libraries 中为每个要安装的库指定一个 whl 映射。 可以从工作区文件、Unity Catalog 卷、云对象存储或本地文件路径安装 wheel 文件。

重要

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

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

以下示例演示如何为作业任务安装三个 Python wheel 文件。

  • 第一个 Python wheel 文件之前已上传到 Azure Databricks 工作区或作为 include 项添加到 sync映射中,并且与捆绑包配置文件位于同一本地文件夹中。
  • 第二个 Python wheel 文件位于 Azure Databricks 工作区的指定工作区文件位置。
  • 第三个 Python wheel 文件之前已上传到 Azure Databricks 工作区中名为 my-volume 的卷。
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - whl: ./my-wheel-0.1.0.whl
            - whl: /Workspace/Shared/Libraries/my-wheel-0.0.1-py3-none-any.whl
            - whl: /Volumes/main/default/my-volume/my-wheel-0.1.0.whl

JAR 文件

若要将 JAR 文件添加到作业任务,请在 libraries 中为每个要安装的库指定一个 jar 映射。 可以从工作区文件、Unity Catalog 卷、云对象存储或本地文件路径安装 JAR。

重要

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

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

以下示例演示如何安装以前上传到 Azure Databricks 工作区中名为 my-volume 的卷的 JAR 文件。

resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - jar: /Volumes/main/default/my-volume/my-java-library-1.0.jar

PyPI 包

若要将 PyPI 包添加到作业任务定义,请在 libraries 中为每个要安装的 PyPI 包指定一个 pypi 映射。 请为每个映射指定以下内容:

  • package 指定要安装的 PyPI 包的名称。 另外还支持可选的确切版本规范。
  • (可选)为 repo 指定可在其中找到 PyPl 包的存储库。 如果此项未指定,则使用默认的 pip 索引 (https://pypi.org/simple/)。

以下示例演示如何安装两个 PyPI 轮子文件。

  • 第一个 PyPI 包使用指定的包版本和默认 pip 索引。
  • 第二个 PyPI 包使用指定的包版本和明确指定的 pip 索引。
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - pypi:
                package: wheel==0.41.2
            - pypi:
                package: numpy==1.25.2
                repo: https://pypi.org/simple/

Maven 包

若要将 Maven 包添加到作业任务定义,请在 libraries 中为每个要安装的 Maven 包指定一个 maven 映射。 请为每个映射指定以下内容:

  • 请为 coordinates 指定包的 Gradle 样式 Maven 坐标。
  • (可选)为 repo 指定要从中安装 Maven 包的 Maven 存储库。 如果省略此项,则同时搜索 Maven 中央存储库和 Spark 包存储库。
  • (可选)为 exclusions 指定要明确排除的任何信赖项。 请参阅 Maven 依赖项排除

以下示例演示如何安装两个 Maven 轮子文件。

  • 第一个 Maven 包使用指定的包坐标,并在 Maven 中央存储库和 Spark 包存储库中搜索此包。
  • 第二个 Maven 包使用指定的包坐标,仅在 Maven 中央存储库中搜索此包,并且不要包含与指定模式匹配的此包的任何依赖项。
resources:
  jobs:
    my_job:
      # ...
      tasks:
        - task_key: my_task
          # ...
          libraries:
            - maven:
                coordinates: com.databricks:databricks-sdk-java:0.8.1
            - maven:
                coordinates: com.databricks:databricks-dbutils-scala_2.13:0.1.4
                repo: https://mvnrepository.com/
                exclusions:
                  - org.scala-lang:scala-library:2.13.0-RC*