安裝適用於 Scala 的 Databricks 連線
注意
本文涵蓋 Databricks 連線 Databricks Runtime 13.3 LTS 和更新版本。
本文說明如何安裝適用於 Scala 的 Databricks 連線。 請參閱什麼是 Databricks 連線?。 如需本文的 Python 版本,請參閱安裝適用於 Python 的 Databricks 連線。
需求
- 您的目標 Azure Databricks 工作區和叢集必須符合 Databricks 連線 的叢集設定需求。
- 安裝在開發電腦上的 Java 開發工具套件 (JDK)。 Databricks 建議您使用的 JDK 安裝版本符合 Azure Databricks 叢集上的 JDK 版本。 若要在叢集上尋找 JDK 版本,請參閱叢集 Databricks Runtime 版本資訊中的「系統環境」一節。 例如,
Zulu 8.70.0.23-CA-linux64
對應至 JDK 8。 請參閱 Databricks Runtime 版本資訊版本和相容性。 - 安裝在開發電腦上的 Scala。 Databricks 建議您使用的 Scala 安裝版本符合 Azure Databricks 叢集上的 Scala 版本。 若要在叢集上尋找 Scala 版本,請參閱叢集 Databricks Runtime 版本資訊的「系統環境」一節。 請參閱 Databricks Runtime 版本資訊版本和相容性。
- 開發電腦上的 Scala 建置工具,例如
sbt
。
設定 用戶端
在您符合 Databricks 連線 的需求之後,請完成下列步驟來設定 Databricks 連線 用戶端。
步驟 1:新增 Databricks 連線 客戶端的參考
在 Scala 專案的建置檔案中,例如
build.sbt
sbt
pom.xml
,針對 Maven 或build.gradle
Gradle,將下列參考新增至 Databricks 連線 用戶端:Sbt
libraryDependencies += "com.databricks" % "databricks-connect" % "14.0.0"
Maven
<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-connect</artifactId> <version>14.0.0</version> </dependency>
Gradle
implementation 'com.databricks.databricks-connect:14.0.0'
將 取代
14.0.0
為與叢集上 Databricks 運行時間版本相符的 Databricks 連線 連結庫版本。 您可以在 Maven 中央存放庫中找到 Databricks 連線 連結庫版本號碼。
步驟 2:設定連線屬性
在本節中,您會設定屬性來建立 Databricks 連線 與遠端 Azure Databricks 叢集之間的連線。 這些屬性包括用來向叢集驗證 Databricks 連線 的設定。
針對 Databricks 連線 Databricks Runtime 13.3 LTS 和更新版本,針對 Scala,Databricks 連線 包含適用於 Java 的 Databricks SDK。 此 SDK 會實作 Databricks 用戶端統一驗證 標準、合並且一致的架構和驗證程序設計方法。 這種方法可讓使用 Azure Databricks 更集中且可預測的方式來設定和自動化驗證。 它可讓您設定 Azure Databricks 驗證一次,然後在多個 Azure Databricks 工具和 SDK 之間使用該設定,而不需要進一步的驗證組態變更。
注意
適用於 Java 0.18.0 和更新版本之 Databricks SDK 支援 OAuth 使用者對電腦 (U2M) 驗證 。 您可能需要將程式代碼專案的已安裝 Databricks SDK for Java 版本更新為 0.18.0 或更新版本,才能使用 OAuth U2M 驗證。 請參閱 開始使用適用於 Java 的 Databricks SDK。
針對 OAuth U2M 驗證,您必須先使用 Databricks CLI 進行驗證,才能執行 Scala 程式代碼。 請參閱教學課程。
適用於 Java 0.17.0 和更新版本之 Databricks SDK 支援 OAuth 機器對機器 (M2M) 驗證 。 您可能需要將程式代碼專案的已安裝 Databricks SDK for Java 版本更新為 0.17.0 或更新版本,才能使用 OAuth U2M 驗證。 請參閱 開始使用適用於 Java 的 Databricks SDK。
Databricks SDK for Java 尚未實 作 Azure 受控識別驗證。
收集下列組態屬性。
- Azure Databricks 工作區實例名稱。 這與叢集的伺服器 主機名 值相同;請參閱 取得 Azure Databricks 計算資源的連線詳細數據。
- 叢集的標識碼。 您可以從 URL 取得叢集識別碼。 請參閱 叢集 URL 和標識碼。
- 支援 Databricks 驗證類型所需的任何其他屬性。 本節會說明這些屬性。
在您的程式代碼中設定連線。 Databricks 連線 依下列順序搜尋組態屬性,直到找到它們為止。 找到它們之後,它會停止搜尋其餘選項。 下表後面會出現每個選項的詳細資料:
組態屬性選項 適用於 1. 類別 DatabricksSession
的remote()
方法僅限 Azure Databricks 個人存取令牌驗證 2.Azure Databricks 組態配置檔 所有 Azure Databricks 驗證類型 3. SPARK_REMOTE
環境變數僅限 Azure Databricks 個人存取令牌驗證 4. DATABRICKS_CONFIG_PROFILE
環境變數所有 Azure Databricks 驗證類型 5. 每個組態屬性的環境變數 所有 Azure Databricks 驗證類型 6.名為 的 Azure Databricks 組態配置檔 DEFAULT
所有 Azure Databricks 驗證類型 類別
DatabricksSession
的remote()
方法針對此選項,僅適用於 Azure Databricks 個人存取令牌驗證 、指定工作區實例名稱、Azure Databricks 個人存取令牌,以及叢集的標識符。
您可以透過數種方式初始化
DatabricksSession
類別,如下所示:- 在中
DatabricksSession.builder
設定host
、token
和clusterId
欄位。 - 使用 Databricks SDK 的
Config
類別。 - 指定 Databricks 組態配置檔以及
clusterId
欄位。
Databricks 不建議您在程式碼中直接指定這些連接屬性。 相反地,Databricks 建議透過環境變數或組態檔設定屬性,如本節所述。 下列程式代碼範例假設您自行提供建議
retrieve*
函式的一些實作,以從使用者或從某些其他組態存放區取得必要的屬性,例如 Azure KeyVault。下列每個方法的程式代碼如下:
// Set the host, token, and clusterId fields in DatabricksSession.builder. // If you have already set the DATABRICKS_CLUSTER_ID environment variable with the // cluster's ID, you do not also need to set the clusterId field here. import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder() .host(retrieveWorkspaceInstanceName()) .token(retrieveToken()) .clusterId(retrieveClusterId()) .getOrCreate() // Use the Databricks SDK's Config class. // If you have already set the DATABRICKS_CLUSTER_ID environment variable with the // cluster's ID, you do not also need to set the clusterId field here. import com.databricks.connect.DatabricksSession import com.databricks.sdk.core.DatabricksConfig val config = new DatabricksConfig() .setHost(retrieveWorkspaceInstanceName()) .setToken(retrieveToken()) val spark = DatabricksSession.builder() .sdkConfig(config) .clusterId(retrieveClusterId()) .getOrCreate() // Specify a Databricks configuration profile along with the clusterId field. // If you have already set the DATABRICKS_CLUSTER_ID environment variable with the // cluster's ID, you do not also need to set the clusterId field here. import com.databricks.connect.DatabricksSession import com.databricks.sdk.core.DatabricksConfig val config = new DatabricksConfig() .setProfile("<profile-name>") val spark = DatabricksSession.builder() .sdkConfig(config) .clusterId(retrieveClusterId()) .getOrCreate()
- 在中
Azure Databricks 組態配置檔
針對此選項,請建立或識別包含欄位
cluster_id
的 Azure Databricks 組態設定檔,以及您想要使用之支援的 Databricks 驗證類型所需的任何其他欄位。每個驗證類型的必要組態設定檔欄位如下所示:
- 針對 Azure Databricks 個人存取權杖驗證:
host
和token
。 - 針對 OAuth 電腦對電腦 (M2M) 驗證 (其中支援):
host
、client_id
和client_secret
。 - 針對 OAuth 使用者對電腦 (U2M) 驗證 (其中支援):
host
。 - 針對 Microsoft Entra ID(先前稱為 Azure Active Directory)服務主體驗證:
host
、azure_tenant_id
、azure_client_id
、azure_client_secret
和 可能azure_workspace_resource_id
。 - 針對 Azure CLI 驗證:
host
。 - 針對 Azure 受控識別驗證 (支援的位置):
host
、azure_use_msi
、azure_client_id
、 和 可能azure_workspace_resource_id
。
然後透過
DatabricksConfig
類別設定此組態配置檔的名稱。您可以透過幾種方式來指定
cluster_id
,如下所示:- 在
cluster_id
組態配置檔中包含 字段,然後只指定組態配置檔的名稱。 - 指定組態配置檔名稱以及
clusterId
欄位。
如果您已經使用叢集標識符來設定
DATABRICKS_CLUSTER_ID
環境變數,則不需要指定cluster_id
或clusterId
字段。下列每個方法的程式代碼如下:
// Include the cluster_id field in your configuration profile, and then // just specify the configuration profile's name: import com.databricks.connect.DatabricksSession import com.databricks.sdk.core.DatabricksConfig val config = new DatabricksConfig() .setProfile("<profile-name>") val spark = DatabricksSession.builder() .sdkConfig(config) .getOrCreate() // Specify the configuration profile name along with the clusterId field. // In this example, retrieveClusterId() assumes some custom implementation that // you provide to get the cluster ID from the user or from some other // configuration store: import com.databricks.connect.DatabricksSession import com.databricks.sdk.core.DatabricksConfig val config = new DatabricksConfig() .setProfile("<profile-name>") val spark = DatabricksSession.builder() .sdkConfig(config) .clusterId(retrieveClusterId()) .getOrCreate()
- 針對 Azure Databricks 個人存取權杖驗證:
SPARK_REMOTE
環境變數針對此選項,僅適用於 Azure Databricks 個人存取令牌驗證,請將環境變數設定
SPARK_REMOTE
為下列字串,並將佔位元取代為適當的值。sc://<workspace-instance-name>:443/;token=<access-token-value>;x-databricks-cluster-id=<cluster-id>
然後初始化 類別,
DatabricksSession
如下所示:import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
若要設定環境變數,請參閱作業系統的檔。
DATABRICKS_CONFIG_PROFILE
環境變數針對此選項,請建立或識別包含欄位
cluster_id
的 Azure Databricks 組態設定檔,以及您想要使用之支援的 Databricks 驗證類型所需的任何其他欄位。如果您已經使用叢集識別元來設定
DATABRICKS_CLUSTER_ID
環境變數,則不需要指定cluster_id
。每個驗證類型的必要組態設定檔欄位如下所示:
- 針對 Azure Databricks 個人存取權杖驗證:
host
和token
。 - 針對 OAuth 電腦對電腦 (M2M) 驗證 (其中支援):
host
、client_id
和client_secret
。 - 針對 OAuth 使用者對電腦 (U2M) 驗證 (其中支援):
host
。 - 針對 Microsoft Entra ID(先前稱為 Azure Active Directory)服務主體驗證:
host
、azure_tenant_id
、azure_client_id
、azure_client_secret
和 可能azure_workspace_resource_id
。 - 針對 Azure CLI 驗證:
host
。 - 針對 Azure 受控識別驗證 (支援的位置):
host
、azure_use_msi
、azure_client_id
、 和 可能azure_workspace_resource_id
。
將
DATABRICKS_CONFIG_PROFILE
環境變數設定為此組態配置檔的名稱。 然後初始化 類別,DatabricksSession
如下所示:import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
若要設定環境變數,請參閱作業系統的檔。
- 針對 Azure Databricks 個人存取權杖驗證:
每個組態屬性的環境變數
針對此選項,請設定
DATABRICKS_CLUSTER_ID
環境變數,以及您想要使用之支援的 Databricks 驗證類型 所需的任何其他環境變數。每個驗證類型的必要環境變數如下:
- 針對 Azure Databricks 個人存取權杖驗證:
DATABRICKS_HOST
和DATABRICKS_TOKEN
。 - 針對 OAuth 電腦對電腦 (M2M) 驗證 (其中支援):
DATABRICKS_HOST
、DATABRICKS_CLIENT_ID
和DATABRICKS_CLIENT_SECRET
。 - 針對 OAuth 使用者對電腦 (U2M) 驗證 (其中支援):
DATABRICKS_HOST
。 - 針對 Microsoft Entra ID(先前稱為 Azure Active Directory)服務主體驗證:
DATABRICKS_HOST
、ARM_TENANT_ID
、ARM_CLIENT_ID
、ARM_CLIENT_SECRET
和 可能DATABRICKS_AZURE_RESOURCE_ID
。 - 針對 Azure CLI 驗證:
DATABRICKS_HOST
。 - 針對 Azure 受控識別驗證 (支援的位置):
DATABRICKS_HOST
、ARM_USE_MSI
、ARM_CLIENT_ID
、 和 可能DATABRICKS_AZURE_RESOURCE_ID
。
然後初始化 類別,
DatabricksSession
如下所示:import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
若要設定環境變數,請參閱作業系統的檔。
- 針對 Azure Databricks 個人存取權杖驗證:
名為的 Azure Databricks 組態配置檔
DEFAULT
針對此選項,請建立或識別包含欄位
cluster_id
的 Azure Databricks 組態設定檔,以及您想要使用之支援的 Databricks 驗證類型所需的任何其他欄位。如果您已經使用叢集識別元來設定
DATABRICKS_CLUSTER_ID
環境變數,則不需要指定cluster_id
。每個驗證類型的必要組態設定檔欄位如下所示:
- 針對 Azure Databricks 個人存取權杖驗證:
host
和token
。 - 針對 OAuth 電腦對電腦 (M2M) 驗證 (其中支援):
host
、client_id
和client_secret
。 - 針對 OAuth 使用者對電腦 (U2M) 驗證 (其中支援):
host
。 - 針對 Microsoft Entra ID(先前稱為 Azure Active Directory)服務主體驗證:
host
、azure_tenant_id
、azure_client_id
、azure_client_secret
和 可能azure_workspace_resource_id
。 - 針對 Azure CLI 驗證:
host
。 - 針對 Azure 受控識別驗證 (支援的位置):
host
、azure_use_msi
、azure_client_id
、 和 可能azure_workspace_resource_id
。
將此組態設定檔
DEFAULT
命名為 。然後初始化 類別,
DatabricksSession
如下所示:scala import com.databricks.connect.DatabricksSession val spark = DatabricksSession.builder().getOrCreate()
- 針對 Azure Databricks 個人存取權杖驗證: