適用於 Python 的 Databricks 公用程式與 Databricks 連線
注意
本文涵蓋 Databricks 連線 Databricks Runtime 13.0 和更新版本。
本文說明如何使用 Databricks 公用程式搭配適用於 Python 的 Databricks 連線。 Databricks 連線 可讓您將熱門的 IDE、Notebook 伺服器和自定義應用程式連線至 Azure Databricks 叢集。 請參閱什麼是 Databricks 連線?。 如需本文的 Scala 版本,請參閱適用於 Scala 的 Databricks 公用程式與 Databricks 連線。
注意
開始使用 Databricks 連線 之前,您必須先設定 Databricks 連線 用戶端。
您可以使用 Databricks 連線 來存取 Databricks 公用程式,如下所示:
WorkspaceClient
使用 類別的dbutils
變數來存取 Databricks Utilities。 類別WorkspaceClient
屬於適用於 Python 的 Databricks SDK,並包含在 Databricks 連線 中。- 用來
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 連線 設定環境變數的方式相同,然後初始化WorkspaceClient
,如下所示:from databricks.sdk import WorkspaceClient w = WorkspaceClient()
適用於 Python 的 Databricks SDK 無法辨識 SPARK_REMOTE
Databricks 連線 的環境變數。
如需適用於 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)