Databricks 实用程序与适用于 Python 的 Databricks Connect

注意

本文介绍适用于 Databricks Runtime 13.3 LTS 及更高版本的 Databricks Connect。

本文介绍如何将 Databricks Utilities 与用于 Python 的 Databricks Connect 配合使用。 Databricks Connect 使你能够将常用 IDE、笔记本服务器和自定义应用程序连接到Azure Databricks群集。 请参阅 Databricks Connect。

在开始使用 Databricks Connect 之前,必须 设置 Databricks Connect 客户端。

有关本文的 Scala 版本,请参阅 Databricks 实用程序与适用于 Scala 的 Databricks Connect。

可用的 Databricks 实用工具

使用 Databricks Connect 访问 Databricks 实用工具,如下所示:

  • 使用 WorkspaceClient 类的 dbutils 变量访问 Databricks 实用程序。 WorkspaceClient 类属于 Databricks SDK for Python,包含在 Databricks Connect 中。
  • 使用 dbutils.fs 访问 Databricks Utilities 的 fs 实用工具。
  • 使用 dbutils.secrets 访问 Databricks 实用工具的机密实用工具。
  • 使用 dbutils.widgets 创建和读取本地小组件,以便为 Databricks Utilities 小组件实用工具编写的代码可在本地运行。 这些小部件只存在于你的本地会话中,无法检索远程笔记本或作业任务参数。 读取你未在本地创建的小部件会引发KeyError,或者如果你使用getArgument,则返回默认值。
  • 用于 dbutils.jobs.taskValues 本地调试为 Databricks Utilities 作业 工具编写的代码。 任务值不会与远程作业运行交换:set 不执行任何操作,get 返回其 debugValue 参数的值,如果未传递 debugValue,则会引发错误。 要设置或获取下游任务的任务值,可以将代码作为作业任务运行。

除上述工具外,其他 Databricks Utilities 功能均无法通过 dbutils 使用。

提示

还可以使用随附的 Databricks SDK 与 Python 一起使用,以访问任何可用的 Databricks REST API,而不仅仅是上面提到的 Databricks 实用工具 API。 请参阅 PyPI 上的 databricks-sdk。

初始化 WorkspaceClient

若要初始化 WorkspaceClient,必须提供足够的信息,以便通过工作区对 Databricks SDK 进行身份验证。 例如,可以:

  • 直接在代码中对工作区 URL 和访问令牌进行硬编码,然后初始化 WorkspaceClient,如下所示。 尽管支持此选项,但 Databricks 不建议 使用此选项,因为如果代码被签入版本控制或以其他方式共享,它可能会暴露敏感信息(如访问令牌)。

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient(host  = f"https://{retrieve_workspace_instance_name()}",
                        token = retrieve_token())
    
  • 创建或指定包含字段 和 host的 token,然后按如下所示初始化 WorkspaceClient:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient(profile = "<profile-name>")
    
  • 按照为 Databricks Connect 设置环境变量 DATABRICKS_HOST 和 DATABRICKS_TOKEN 的方式设置环境变量,然后初始化 WorkspaceClient,如下所示:

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    

用于Python的 Databricks SDK 无法识别 Databricks Connect 的 SPARK_REMOTE 环境变量。

有关 Databricks SDK for Python 的其他Azure Databricks身份验证选项,以及如何在 Databricks SDK 中初始化 AccountClient,以在帐户级别而不是工作区级别访问可用的 Databricks REST API,请参阅 pyPI 上的 databricks-sdk。

示例:在卷中创建文件

以下示例演示如何使用用于 Python 的 Databricks SDK 自动执行 Databricks 实用工具。 此示例在工作区中的 Unity 目录卷路径中创建一 zzz_hello.txt 个名为的文件,从文件读取数据,然后删除该文件。 此示例假定已设置环境变量 DATABRICKS_HOST 和 DATABRICKS_TOKEN:

from databricks.sdk import WorkspaceClient

w = WorkspaceClient()

file_path = "/Volumes/main/default/my-volume/zzz_hello.txt"
file_data = "Hello, Databricks!"
fs = w.dbutils.fs

fs.put(
  file      = file_path,
  contents  = file_data,
  overwrite = True
)

print(fs.head(file_path))

fs.rm(file_path)

另请参阅 Databricks SDK for Python 文档中的 interaction with dbutils。