注意
Databricks 建議 Databricks 資產套件組合,以原始程式碼的形式建立、開發、部署及測試作業和其他 Databricks 資源。 請參閱 什麼是 Databricks 資產套件組合?。
在本文中,您將瞭解如何自動化 Azure Databricks 作業,並使用適用於 Java 的 Databricks SDK 來加速開發。 本文補充適用於 Java 自述檔、 API 參考和 範例的 Databricks SDK。
注意
這項功能提供搶鮮版 (Beta),而且可在生產環境中使用。
在 Beta 期間,Databricks 建議您將相依性釘選到程式代碼相依的特定 Databricks SDK for Java 次要版本。 例如,您可以在 Maven 等 pom.xml 檔案中釘選相依性。 如需釘選相依性的詳細資訊,請參閱 相依性機制簡介。
開始之前
開始使用適用於 Java 的 Databricks SDK 之前,您的開發電腦必須具有:
- 已設定 Azure Databricks 驗證。
- 與 Java 8 或更新版本相容的 Java 開發工具套件 (JDK)。 使用 Databricks SDK for Java 進行持續整合 (CI) 測試,與 Java 版本 8、11、17 和 20 相容。
- 建議使用Java相容的整合開發環境 (IDE)。 Databricks 建議 IntelliJ IDEA。
開始使用適用於 Java 的 Databricks SDK
在你的專案的
pom.xml檔案中,設定建置系統相依於適用於 Java 的 Databricks SDK。 若要這樣做,請將下列內容<dependency>新增至pom.xml檔案的現有<dependencies>區段。<dependencies>如果區段不存在於pom.xml檔案中,您也必須將<dependencies>父元素新增至pom.xml檔案。例如,若要在 IntelliJ IDEA 中開啟項目的
pom.xml檔案,請按兩下 [ 檢視 > 工具 Windows > 專案],然後按兩下以開啟 your-project-name> src > pom.xml。<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>注意
請務必將 取代
0.0.1為最新版的 Databricks SDK for Java。 您可以在 Maven 中央存放庫中找到最新版本。指示您的專案對適用於 Java 的 Databricks SDK 採用宣告的相依性。 例如,在 IntelliJ IDEA 中,於專案的 [專案 ] 工具視窗中,以滑鼠右鍵按兩下專案的根節點,然後按兩下 [ 重載專案]。
新增程式代碼以匯入適用於 Java 的 Databricks SDK,並列出 Azure Databricks 工作區中的所有叢集。 例如,在項目的
Main.java檔案中,程序代碼可能如下所示:import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.service.compute.ClusterInfo; import com.databricks.sdk.service.compute.ListClustersRequest; public class Main { public static void main(String[] args) { WorkspaceClient w = new WorkspaceClient(); for (ClusterInfo c : w.clusters().list(new ListClustersRequest())) { System.out.println(c.getClusterName()); } } }注意
透過上述呼叫
WorkspaceClient w = new WorkspaceClient()中未設定任何自變數,Databricks SDK for Java 會使用其預設程式嘗試執行 Azure Databricks 驗證。 若要覆寫此預設行為,請參閱下列驗證一節。建立您的專案。 例如,若要在 IntelliJ IDEA 中執行這項操作,請在主功能表中按兩下 [建 > 置建置專案]。
執行您的主要檔案。 例如,若要在 IntelliJ IDEA 中針對專案的
Main.java檔案執行這個操作,請在主功能表中點擊 執行 > 'Main'。叢集清單隨即出現。 例如,在 IntelliJ IDEA 中,這是在 [執行 工具] 視窗中。 若要顯示此工具視窗,請從主選單中按下 [檢視] [檢視] > [工具視窗] > [執行]。
使用 Azure Databricks 帳戶或工作區驗證適用於 Java 的 Databricks SDK
適用於 Java 的 Databricks SDK 會實作 Databricks 統一驗證 標準,這是整合且一致的驗證架構和程式設計方法。 這種方法有助於使 Azure Databricks 的設定和自動化驗證更加集中且可預測。 可讓您只需設定 Databricks 驗證一次,然後即可在多個 Databricks 工具和 SDK 中使用該組態,而無需進一步變更驗證組態。 如需詳細資訊,包括 Java 中更完整的程式碼範例,請參閱 Databricks 統一驗證。
注意
適用於 Java 的 Databricks SDK 尚未實作 使用 Azure 受控識別進行驗證。
使用適用於 Java 的 Databricks SDK 初始化 Databricks 驗證的一些可用編碼模式包括:
透過執行下列其中一項動作,使用 Databricks 預設驗證:
- 建立或識別具有目標 Databricks 驗證類型所需欄位的自訂 Databricks 組態設定檔。 然後將
DATABRICKS_CONFIG_PROFILE環境變數設定為自定義組態配置檔的名稱。 - 設定目標 Databricks 驗證類型所需的環境變數。
然後使用 Databricks 預設驗證具現化一個
WorkspaceClient物件,如下所示:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...- 建立或識別具有目標 Databricks 驗證類型所需欄位的自訂 Databricks 組態設定檔。 然後將
支援硬式編碼必要欄位,但不建議這麼做,因為它可能會暴露程式碼中的敏感性資訊,例如 Azure Databricks 個人存取權杖。 下列範例對 Azure Databricks 主機和存取令牌值進行硬編碼,以便進行 Databricks 令牌驗證:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
另 請參閱 Databricks SDK for Java 自述檔中的驗證 。
搭配 Databricks SDK for Java 使用 Databricks 公用程式和 Java
Databricks 公用程式 提供數個協助程式函式,可讓您輕鬆地有效地使用物件記憶體、鏈結和參數化筆記本,以及處理秘密。 Databricks 提供 適用於 Scala 的 Databricks 公用程式連結庫,您可以使用 Java 程式代碼呼叫,讓您以程式設計方式存取 Databricks 公用程式。
若要使用 Java 程式代碼呼叫 Databricks Utilities for Scala,請執行下列動作:
在您的 Java 專案中,宣告 Databricks SDK for Java 的相依性,如上一節所述。
宣告適用於 Scala 連結庫的 Databricks 公用程式相依性。 若要這樣做,請將下列內容
<dependency>新增至pom.xml檔案的現有<dependencies>區段:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>注意
請務必將 取代
0.1.4為最新版的 Databricks Utilities for Scala 連結庫。 您可以在 Maven 中央存放庫中找到最新版本。指示您的專案對適用於 Scala 的 Databricks 公用程式採用宣告的相依性。 例如,在 IntelliJ IDEA 中,在專案的 [專案 ] 工具視窗中,按兩下專案的根節點,然後按兩下 [Maven > 重載專案]。
新增程式代碼以匯入,然後呼叫適用於 Scala 的 Databricks 公用程式。 例如,下列程式代碼會將 Unity 目錄磁碟區自動化。 此範例會在工作區內的磁碟區路徑中建立名為
zzz_hello.txt的檔案、從檔案讀取數據,然後刪除檔案:import com.databricks.sdk.core.DatabricksConfig; import com.databricks.sdk.scala.dbutils.DBUtils; public class Main { public static void main(String[] args) { String filePath = "/Volumes/main/default/my-volume/zzz_hello.txt"; String fileData = "Hello, Databricks!"; DBUtils dbutils = DBUtils.getDBUtils(new DatabricksConfig().setProfile("DEFAULT")); dbutils.fs().put(filePath, fileData, true); System.out.println(dbutils.fs().head(filePath, 18)); dbutils.fs().rm(filePath, false); } }建置專案並執行您的主要檔案。
程式碼範例
下列程式代碼範例示範如何使用適用於 Java 的 Databricks SDK 來建立和刪除叢集、建立作業,以及列出帳戶層級群組。 這些程式代碼範例會使用 Databricks SDK for Java 的預設 Azure Databricks 驗證 程式。
如需其他程式代碼範例,請參閱 GitHub 中 Databricks SDK for Java 存放庫中的 examples 資料夾。
建立叢集
此程式碼範例會建立具有指定 Databricks Runtime 版本和叢集節點類型的叢集。 此叢集有一個背景工作角色,且叢集會在閒置時間 15 分鐘後將自動終止。
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Main {
public static void main(String[] args) {
WorkspaceClient w = new WorkspaceClient();
CreateClusterResponse c = w.clusters().create(
new CreateCluster()
.setClusterName("my-cluster")
.setSparkVersion("12.2.x-scala2.12")
.setNodeTypeId("Standard_DS3_v2")
.setAutoterminationMinutes(15L)
.setNumWorkers(1L)
).getResponse();
System.out.println("View the cluster at " +
w.config().getHost() +
"#setting/clusters/" +
c.getClusterId() +
"/configuration\n");
}
}
建立具有特定 JDK 版本的叢集
您可以建立使用特定版本的 Java 開發套件 (JDK) 的叢集。
注意
針對 Databricks Runtime 17.3,JDK 21 處於公開預覽狀態,而 JDK 17 是預設值。 針對 Databricks Runtime 16.0 或更新版本,JDK 17 已正式推出,且預設值為 。 針對 Databricks Runtime 13.1 版至 15.4 版,JDK 8 是預設值,而 JDK 17 則為公開預覽版。
當您建立叢集時,請將下列環境變數新增至 進階選項 > Spark > 環境變數,以指定叢集同時使用驅動程式和執行程式的 JDK 17 或 JDK 21。
適用於 JDK 17:
JNAME=zulu17-ca-amd64
對於 JDK 21:
JNAME=zulu21-ca-amd64
永久刪除叢集
此程式碼範例會從工作區中永久刪除具有指定叢集 ID 的叢集。
import com.databricks.sdk.WorkspaceClient;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("ID of cluster to delete (for example, 1234-567890-ab123cd4):");
Scanner in = new Scanner(System.in);
String c_id = in.nextLine();
WorkspaceClient w = new WorkspaceClient();
w.clusters().permanentDelete(c_id);
}
}
建立作業
此程式碼範例會建立 Azure Databricks 作業,可用來在指定的叢集上執行指定的筆記本。 當此程式代碼執行時,它會從終端機的使用者取得現有的筆記本路徑、現有的叢集標識碼和相關作業設定。
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.jobs.JobTaskSettings;
import com.databricks.sdk.service.jobs.NotebookTask;
import com.databricks.sdk.service.jobs.NotebookTaskSource;
import com.databricks.sdk.service.jobs.CreateResponse;
import com.databricks.sdk.service.jobs.CreateJob;
import java.util.Scanner;
import java.util.Map;
import java.util.Collection;
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
System.out.println("Some short name for the job (for example, my-job):");
Scanner in = new Scanner(System.in);
String jobName = in.nextLine();
System.out.println("Some short description for the job (for example, My job):");
String description = in.nextLine();
System.out.println("ID of the existing cluster in the workspace to run the job on (for example, 1234-567890-ab123cd4):");
String existingClusterId = in.nextLine();
System.out.println("Workspace path of the notebook to run (for example, /Users/someone@example.com/my-notebook):");
String notebookPath = in.nextLine();
System.out.println("Some key to apply to the job's tasks (for example, my-key): ");
String taskKey = in.nextLine();
System.out.println("Attempting to create the job. Please wait...");
WorkspaceClient w = new WorkspaceClient();
Map<String, String> map = Map.of("", "");
Collection<JobTaskSettings> tasks = Arrays.asList(new JobTaskSettings()
.setDescription(description)
.setExistingClusterId(existingClusterId)
.setNotebookTask(new NotebookTask()
.setBaseParameters(map)
.setNotebookPath(notebookPath)
.setSource(NotebookTaskSource.WORKSPACE))
.setTaskKey(taskKey)
);
CreateResponse j = w.jobs().create(new CreateJob()
.setName(jobName)
.setTasks(tasks)
);
System.out.println("View the job at " +
w.config().getHost() +
"/#job/" +
j.getJobId()
);
}
}
管理 Unity 目錄磁碟區中的檔案
此程式代碼範例示範 files 內各種 WorkspaceClient 功能的呼叫,以存取 Unity 目錄 磁碟區。
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.files.DirectoryEntry;
import com.databricks.sdk.service.files.DownloadResponse;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Main {
public static void main(String[] args) throws IOException {
String catalog = "main";
String schema = "default";
String volume = "my-volume";
String volumePath = "/Volumes/" + catalog + "/" + schema + "/" + volume; // /Volumes/main/default/my-volume
String volumeFolder = "my-folder";
String volumeFolderPath = volumePath + "/" + volumeFolder; // /Volumes/main/default/my-volume/my-folder
String volumeFile = "data.csv";
String volumeFilePath = volumeFolderPath + "/" + volumeFile; // /Volumes/main/default/my-volume/my-folder/data.csv
String uploadFilePath = "./data.csv";
WorkspaceClient w = new WorkspaceClient();
// Create an empty folder in a volume.
w.files().createDirectory(volumeFolderPath);
// Upload a file to a volume.
try {
File uploadFile = new File(upload_file_path);
InputStream uploadInputStream = Files.newInputStream(Paths.get(upload_file_path));
w.files().upload(volumeFilePath, uploadInputStream);
} catch (java.io.IOException e) {
System.out.println(e.getMessage());
System.exit(-1);
}
// List the contents of a volume.
Iterable<DirectoryEntry> volumeItems = w.files().listDirectoryContents(volumePath);
for (DirectoryEntry volumeItem: volumeItems) {
System.out.println(volumeItem.getPath());
}
// List the contents of a folder in a volume.
Iterable<DirectoryEntry> volumeFolderItems = w.files().listDirectoryContents(volumeFolderPath);
for (DirectoryEntry volumeFolderItem: volumeFolderItems) {
System.out.println(volumeFolderItem.getPath());
}
// Print the contents of a file in a volume.
DownloadResponse resp = w.files().download(volumeFilePath);
InputStream downloadedFile = resp.getContents();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(downloadedFile));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (java.io.IOException e) {
System.out.println(e.getMessage());
System.exit(-1);
}
// Delete a file from a volume.
w.files().delete(volumeFilePath);
// Delete a folder from a volume.
w.files().deleteDirectory(volumeFolderPath);
}
}
列出帳戶層級群組
此程式碼範例會列出 Azure Databricks 帳戶內所有可用群組的顯示名稱。
import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
import com.databricks.sdk.service.iam.Group;
import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
public class Main {
public static void main(String[] args) {
AccountClient a = new AccountClient();
for (Group g : a.groups().list((new ListAccountGroupsRequest()))) {
System.out.println(g.getDisplayName());
}
}
}
搭配適用於 Java 的 Databricks SDK 使用 Scala
您可以使用 Scala 專案搭配 Databricks SDK for Java。 開始之前,您的開發計算機必須具有:
- 已設定 Azure Databricks 驗證。
- 建議使用 Scala 相容的整合開發環境 (IDE)。 Databricks 建議使用 Scala 外掛程式的 IntelliJ IDEA。 這些指示已使用 IntelliJ IDEA Community Edition 2023.3.6 進行測試。 如果您使用不同版本的 IntelliJ IDEA,下列指示可能會有所不同。
- 與 Java 8 或更新版本相容的 Java 開發工具套件 (JDK)。 如果您想要在 Azure Databricks 叢集上執行應用程式或使用連結庫,Databricks 建議您使用符合叢集上 JDK 版本的 JDK 版本。 若要尋找特定 Databricks Runtime 隨附的 JDK 版本,請參閱 Databricks Runtime 版本資訊版本和相容性。 如果您使用 IntelliJ IDEA,您可以選擇現有的本機 JDK 安裝,或在 Scala 專案建立期間在本機安裝新的 JDK。
- Scala 建置工具。 Databricks 建議
sbt。 如果您使用 IntelliJ IDEA,您可以選擇在sbtScala 專案建立期間要使用的版本。 - Scala。 如果您想要在 Azure Databricks 叢集上執行應用程式或使用連結庫,Databricks 建議您使用符合叢集上 Scala 版本的 Scala 版本。 若要尋找特定 Databricks Runtime 隨附的 Scala 版本,請參閱 Databricks Runtime 版本資訊版本和相容性。 如果您使用 IntelliJ IDEA,您可以選擇 Scala 專案建立期間要使用的 Scala 版本。
若要設定、建置和執行 Scala 專案:
在專案的
build.sbt檔案中,將下列代碼行新增至檔案結尾,然後儲存檔案,以使用 Databricks SDK for Java 函式庫:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"注意
請務必將 取代
0.2.0為最新版的 Databricks SDK for Java 連結庫。 您可以在 Maven 中央存放庫中找到最新版本。指示您的專案對適用於 Java 的 Databricks SDK 採用宣告的相依性。 例如,在 IntelliJ IDEA 中,按兩下 [ 載入 sbt 變更 通知] 圖示。
新增程式代碼以匯入適用於 Java 的 Databricks SDK,並列出 Azure Databricks 工作區中的所有叢集。 例如,在項目的
Main.scala檔案中,程序代碼可能如下所示:import com.databricks.sdk.WorkspaceClient import com.databricks.sdk.service.compute.ListClustersRequest object Main { def main(args: Array[String]): Unit = { val w = new WorkspaceClient() w.clusters().list(new ListClustersRequest()).forEach{ elem => println(elem.getClusterName) } } }注意
透過上述呼叫
val w = new WorkspaceClient()中未設定任何自變數,Databricks SDK for Java 會使用其預設程式嘗試執行 Azure Databricks 驗證。 若要覆寫此預設行為,請參閱下列驗證一節。建立您的專案。 例如,若要在 IntelliJ IDEA 中執行這項操作,請在主功能表中按兩下 [建 > 置建置專案]。
執行您的主要檔案。 例如,若要在 IntelliJ IDEA 中針對項目的
Main.scala檔案執行操作,請在主功能表中單擊 執行 > 執行 'Main.scala'。叢集清單隨即出現。 例如,在 IntelliJ IDEA 中,這是在 [執行 工具] 視窗中。 若要顯示此工具視窗,請從主選單中按下 [檢視] [檢視] > [工具視窗] > [執行]。
搭配適用於 Java 的 Databricks SDK 使用 Databricks 公用程式和 Scala
Databricks 公用程式 提供數個協助程式函式,可讓您輕鬆地有效地使用物件記憶體、鏈結和參數化筆記本,以及處理秘密。 Databricks 提供 適用於 Scala 的 Databricks 公用程式連結庫,可讓您以程序設計方式使用 Scala 存取 Databricks 公用程式。
若要呼叫適用於 Scala 的 Databricks 公用程式,請執行下列動作:
在您的 Scala 專案中,宣告與 Databricks SDK for Java 相依性,如上一節所述。
宣告適用於 Scala 連結庫的 Databricks 公用程式相依性。 例如,在專案的
build.sbt檔案中,將下列這一行新增至檔案的結尾,然後儲存檔案。libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"注意
請務必將 取代
0.1.4為最新版的 Databricks Utilities for Scala 連結庫。 您可以在 Maven 中央存放庫中找到最新版本。指示您的專案對適用於 Scala 的 Databricks 公用程式採用宣告的相依性。 例如,在 IntelliJ IDEA 中,按兩下 [ 載入 sbt 變更 通知] 圖示。
新增程式代碼以匯入,然後呼叫適用於 Scala 的 Databricks 公用程式。 例如,下列程式代碼會將 Unity 目錄磁碟區自動化。 此範例會在工作區內的磁碟區路徑中建立名為
zzz_hello.txt的檔案、從檔案讀取數據,然後刪除檔案:import com.databricks.sdk.scala.dbutils.DBUtils object Main { def main(args: Array[String]): Unit = { val filePath = "/Volumes/main/default/my-volume/zzz_hello.txt" val fileData = "Hello, Databricks!" val dbutils = DBUtils.getDBUtils() dbutils.fs.put( file = filePath, contents = fileData, overwrite = true ) println(dbutils.fs.head(filePath)) dbutils.fs.rm(filePath) } }注意
透過上述呼叫
val dbutils = DBUtils.getDBUtils()中未設定任何自變數,適用於 Scala 的 Databricks Utilities 會使用其預設程式嘗試執行 Azure Databricks 驗證。若要覆寫此預設行為,請將具現化
DatabricksCfg物件當做自變數傳遞至getDBUtils。 如需詳細資訊,請參閱上述 驗證 一節。不過請注意,如果您的程式代碼是在 Databricks Runtime 內執行,則會忽略此
DatabricksCfg物件。 這是因為在 Databricks Runtime 內執行時,適用於 Scala 的 Databricks 公用程式委派給內建 Databricks 公用程式。建置專案並執行您的主要檔案。
若要存取 Unity 目錄 磁碟區,請使用 files內的 WorkspaceClient。 請參閱 管理 Unity 目錄磁碟區中的檔案。 您無法使用 DBUtils.getDBUtils() 來存取磁碟區。
測試
若要測試程序代碼,請使用Java測試架構,例如 JUnit。 若要在不呼叫 Azure Databricks REST API 端點或變更 Azure Databricks 帳戶或工作區的狀態的情況下,在模擬條件下測試程式代碼,請使用 Java 模擬連結庫,例如 Mockito。
例如,假設下列名為 Helpers.java 的檔案,其中包含 createCluster 傳回新叢集相關信息的函式:
// Helpers.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Helpers {
static CreateClusterResponse createCluster(
WorkspaceClient w,
CreateCluster createCluster,
String clusterName,
String sparkVersion,
String nodeTypeId,
Long autoTerminationMinutes,
Long numWorkers
) {
return w.clusters().create(
createCluster
.setClusterName(clusterName)
.setSparkVersion(sparkVersion)
.setNodeTypeId(nodeTypeId)
.setAutoterminationMinutes(autoTerminationMinutes)
.setNumWorkers(numWorkers)
).getResponse();
}
}
並指定下列名為 的檔案,該檔案會 Main.java 呼叫 函 createCluster 式:
// Main.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.service.compute.CreateClusterResponse;
public class Main {
public static void main(String[] args) {
WorkspaceClient w = new WorkspaceClient();
// Replace <spark-version> with the target Spark version string.
// Replace <node-type-id> with the target node type string.
CreateClusterResponse c = Helpers.createCluster(
w,
new CreateCluster(),
"My Test Cluster",
"<spark-version>",
"<node-type-id>",
15L,
1L
);
System.out.println(c.getClusterId());
}
}
下列名為 HelpersTest.java 的檔案會測試函 createCluster 式是否傳回預期的回應。 此測試會模擬 WorkspaceClient 物件、定義模擬對象的設定,然後將模擬物件傳遞至 createCluster 函式,而不是在目標工作區中建立叢集。 然後測試會檢查函式是否傳回新模擬叢集的預期標識碼。
// HelpersTest.java
import com.databricks.sdk.WorkspaceClient;
import com.databricks.sdk.mixin.ClustersExt;
import com.databricks.sdk.service.compute.ClusterDetails;
import com.databricks.sdk.service.compute.CreateCluster;
import com.databricks.sdk.support.Wait;
import com.databricks.sdk.service.compute.CreateClusterResponse;
import org.junit.jupiter.api.Test;
import org.mockito.Mockito;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class HelpersTest {
@Test
public void testCreateCluster() {
WorkspaceClient mockWorkspaceClient = Mockito.mock(WorkspaceClient.class);
ClustersExt mockClustersExt = Mockito.mock(ClustersExt.class);
CreateCluster mockCreateCluster = new CreateCluster();
Wait<ClusterDetails, CreateClusterResponse> mockWait = Mockito.mock(Wait.class);
CreateClusterResponse mockResponse = Mockito.mock(CreateClusterResponse.class);
Mockito.when(mockWorkspaceClient.clusters()).thenReturn(mockClustersExt);
Mockito.when(mockClustersExt.create(Mockito.any(CreateCluster.class))).thenReturn(mockWait);
Mockito.when(mockWait.getResponse()).thenReturn(mockResponse);
// Replace <spark-version> with the target Spark version string.
// Replace <node-type-id> with the target node type string.
CreateClusterResponse response = Helpers.createCluster(
mockWorkspaceClient,
mockCreateCluster,
"My Test Cluster",
"<spark-version>",
"<node-type-id>",
15L,
1L
);
assertEquals(mockResponse, response);
}
}
故障排除
本節說明適用於 Java 的 Databricks SDK 常見問題的解決方案。
若要回報問題或任何其他意見反應,請建立適用於 Java 的 Databricks SDK 的 GitHub 問題。
錯誤:無法剖析回應
如果您在嘗試使用適用於 Java 的 Databricks SDK 時收到下列錯誤,幾乎一律表示您的驗證設定有問題。
Error: unable to parse response. This is likely a bug in the Databricks SDK for Java or the underlying REST API.
如果您遇到此錯誤,請確認下列項目:
- 請確定您的 Databricks 主機已正確設定。
- 確認驗證方法具有您嘗試執行的 API 作業所需的許可權。
- 如果您位於公司防火牆後面,請確保它沒有阻止或重新導向 API 流量。
此錯誤的常見原因是私人連結將 SDK 重新導向至登入頁面,而 SDK 無法處理該頁面。 當嘗試從與 VPC 端點所屬不同的網路存取已啟用私人連結的工作區時,通常會發生這種情況。
如需詳細資訊,請參閱:
其他資源
如需詳細資訊,請參閱
- 適用於 Java 自述檔的數據bricks SDK
- 適用於 Java API 的 Databricks SDK 參考
- 其他程式碼範例
- 記錄
- 長時間執行的作業
- 編頁回應