Databricks 实用工具与适用于 Python 的 Databricks Connect

注意

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

本文介绍如何将 Databricks Utilities 与用于 Python 的 Databricks Connect 配合使用。 Databricks Connect 使你能够将常用 IDE、笔记本服务器和自定义应用程序连接到 Azure Databricks 群集。 请参阅 什么是 Databricks Connect?。 有关本文的 Scala 版本,请参阅 Databricks 实用工具与适用于 Scala 的 Databricks Connect

注意

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

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

  • 使用 WorkspaceClient 类的 dbutils 变量访问 Databricks Utilities。 WorkspaceClient 类属于用于 Python 的 Databricks SDK,包含在 Databricks Connect 中。
  • 使用 dbutils.fs 访问 Databricks Utilities 的 fs 实用工具。
  • 使用 dbutils.secrets 访问 Databricks 实用工具的机密实用工具。
  • 除了上述的实用工具之外,没有其他 Databricks 实用工具功能可以通过 dbutils获得。

提示

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

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

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

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

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

    from databricks.sdk import WorkspaceClient
    
    w = WorkspaceClient()
    

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

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

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

另请参阅适用于 Python 的 Databricks SDK 文档中的与 dbutils 交互