Databricks Utilities with Databricks Connect for Python
注意
本文涵蓋 Databricks Runtime 13.3 LTS 和更新版本適用的 Databricks Connect。
本文說明如何搭配適用於 Python 的 Databricks Connect 使用 Databricks 公用程式 。 Databricks Connect 可讓您將熱門的 IDE、Notebook 伺服器和自定義應用程式連線到 Azure Databricks 叢集。 請參閱 什麼是 Databricks Connect?。 如需本文的 Scala 版本,請參閱 Databricks Utilities with Databricks Connect for Scala。
注意
開始使用 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
取得。
提示
您也可以使用內含的 Databricks SDK for Python 來存取任何可用的 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())
建立或指定包含欄位
host
和token
的組態設定檔,然後初始化WorkspaceClient
,如下所示:from databricks.sdk import WorkspaceClient w = WorkspaceClient(profile = "<profile-name>")
設定環境變數
DATABRICKS_HOST
,並以DATABRICKS_TOKEN
您為 Databricks Connect 設定環境變數的方式進行設定,然後初始化WorkspaceClient
,如下所示:from databricks.sdk import WorkspaceClient w = WorkspaceClient()
適用於 Python 的 Databricks SDK 無法辨識 SPARK_REMOTE
Databricks Connect 的環境變數。
如需適用於 Python 的 Databricks SDK 的其他 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)