Пакет SDK Databricks для Java
В этой статье вы узнаете, как автоматизировать операции в учетных записях Azure Databricks, рабочих областях и связанных ресурсах с помощью пакета SDK Databricks для Java. Эта статья дополняет пакет SDK Databricks для Java README, справочник по API и примеры.
Примечание.
Эта функция доступна в бета-версии и подходит для использования в рабочей среде.
В период бета-версии Databricks рекомендует закрепить зависимость от конкретной дополнительной версии пакета SDK Databricks для Java, от которой зависит ваш код. Например, можно закрепить зависимости в файлах, таких как pom.xml
Maven. Дополнительные сведения о закреплении зависимостей см . в разделе "Введение в механизм зависимостей".
Подготовка к работе
Прежде чем приступить к использованию пакета SDK Databricks для Java, компьютер разработки должен иметь следующее:
- Настроена проверка подлинности Azure Databricks.
- Пакет средств разработки Java (JDK), совместимый с Java 8 или более поздней версии. Непрерывное тестирование интеграции (CI) с помощью пакета SDK Databricks для Java совместимо с Java версии 8, 11, 17 и 20.
- Рекомендуется использовать интегрированную среду разработки , совместимую с Java. Databricks рекомендует IntelliJ IDEA.
Начало работы с пакетом SDK Databricks для Java
В файле проекта
pom.xml
укажите системе сборки зависимость от пакета SDK Databricks для Java. Для этого добавьте следующий<dependency>
код вpom.xml
существующий<dependencies>
раздел файла.<dependencies>
Если раздел еще не существует вpom.xml
файле, необходимо также добавить<dependencies>
родительский элемент вpom.xml
файл.Например, чтобы открыть файл проекта
pom.xml
в IntelliJ IDEA, нажмите кнопку View > Tool Windows > Project, а затем дважды щелкните, чтобы открыть pom.xml> имени> проекта.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Примечание.
Обязательно замените
0.0.1
последнюю версию пакета SDK Databricks для Java. Последнюю версию можно найти в центральном репозитории Maven.Укажите проекту принять объявленную зависимость от пакета SDK Databricks для Java. Например, в окне средства проекта IntelliJ IDEA щелкните правой кнопкой мыши корневой узел проекта и нажмите кнопку "Перезагрузить проект".
Добавьте код для импорта пакета SDK Databricks для Java и перечисления всех кластеров в рабочей области 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()
, пакет SDK Databricks для Java использует свой процесс по умолчанию для проверки подлинности Azure Databricks. Чтобы переопределить это поведение по умолчанию, см. следующий раздел проверки подлинности .Выполните сборку проекта. Например, чтобы сделать это в IntelliJ IDEA, в главном меню щелкните "Построить проект сборки>".
Запустите основной файл. Например, чтобы сделать это в IntelliJ IDEA для файла проекта
Main.java
, в главном меню нажмите кнопку Выполнить > команду "Main".Появится список кластеров. Например, в IntelliJ IDEA это в окне средства запуска . Чтобы отобразить это окно средства, в главном меню выберите команду "Просмотр > инструментов", чтобы запустить windows>.
Проверка подлинности пакета SDK Databricks для Java с помощью учетной записи Или рабочей области Azure Databricks
Пакет SDK Databricks для Java реализует стандарт унифицированной проверки подлинности клиента Databricks, консолидированный и согласованный архитектурный и программный подход к проверке подлинности. Этот подход помогает настроить и автоматизировать проверку подлинности с помощью Azure Databricks более централизованным и предсказуемым. Он позволяет настроить проверку подлинности Databricks один раз, а затем использовать эту конфигурацию в нескольких средствах Databricks и пакетах SDK без дальнейших изменений конфигурации проверки подлинности. Дополнительные сведения, включая более полные примеры кода в Java, см. в статье Databricks, унифицированная проверка подлинности клиента.
Примечание.
Пакет SDK Databricks для Java еще не реализовал проверку подлинности управляемых удостоверений Azure.
Некоторые из доступных шаблонов кода для инициализации проверки подлинности Databricks с помощью пакета SDK Databricks для Java:
Используйте проверку подлинности databricks по умолчанию, выполнив одно из следующих действий:
- Создайте или определите пользовательский профиль конфигурации Databricks с обязательными полями для целевого типа проверки подлинности Databricks. Затем задайте
DATABRICKS_CONFIG_PROFILE
для переменной среды имя пользовательского профиля конфигурации. - Задайте необходимые переменные среды для целевого типа проверки подлинности Databricks.
Затем создайте экземпляр объекта с проверкой
WorkspaceClient
подлинности databricks по умолчанию следующим образом: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); // ...
См. также проверку подлинности в пакете SDK Databricks для Java README.
Использование служебных программ Databricks и Java с пакетом SDK Databricks для Java
Служебные программы Databricks предоставляют несколько вспомогательных функций, чтобы упростить работу с хранилищем объектов эффективно, цепочку и параметризацию записных книжек и работать с секретами. Databricks предоставляет служебные программы Databricks для Scala , которую можно вызвать с помощью кода Java, чтобы обеспечить программный доступ к Databricks Utilities.
Чтобы использовать код Java для вызова служебных программ Databricks для Scala, сделайте следующее:
В проекте Java объявите зависимость от пакета SDK Databricks для Java, как описано в предыдущем разделе.
Объявите зависимость от библиотеки Databricks Utilities для Scala. Для этого добавьте следующее
<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 для Scala. Последнюю версию можно найти в центральном репозитории Maven.Укажите проекту, чтобы принять объявленную зависимость от служебных программ Databricks для Scala. Например, в окне инструментов проекта IntelliJ IDEA щелкните корневой узел проекта и нажмите кнопку Maven > Reload Project.
Добавьте код для импорта и вызовите служебную программу Databricks для Scala. Например, следующий код автоматизирует том каталога 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); } }
Создайте проект и запустите основной файл.
Примеры кода
В следующих примерах кода показано, как использовать пакет SDK Databricks для Java для создания и удаления кластеров, создания заданий и перечисления групп на уровне учетной записи. В этих примерах кода используется пакет SDK Databricks для процесса проверки подлинности Azure Databricks по умолчанию для Java.
Дополнительные примеры кода см . в папке примеров в пакете SDK Databricks для Java в GitHub.
- Создание кластера
- Окончательное удаление кластера
- Создание задания
- Управление файлами в томах каталога Unity
- Перечисление групп на уровне учетной записи
Создание кластера
В этом примере кода создается кластер с указанной версией 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 17
Примечание.
JDK 8 полностью поддерживается. JDK 17 находится в общедоступной предварительной версии для Databricks Runtime версии 13.1 и выше.
В этом разделе содержится руководство по созданию кластера с помощью пакета средств разработки Java (JDK). Узнайте, как создать кластер с JDK 17 для использования Java в записных книжках и заданиях.
При создании кластера укажите, что кластер использует JDK 17 для драйвера и исполнителя, добавив следующую переменную среды в переменные среды Spark > Advanced Options>:
JNAME=zulu17-ca-amd64
Окончательное удаление пользователя
Этот пример кода окончательно удаляет кластер с указанным идентификатором кластера из рабочей области.
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());
}
}
}
Использование Scala с пакетом SDK Databricks для Java
Проекты Scala можно использовать с пакетом SDK Databricks для Java. Прежде чем начать работу, компьютер разработки должен иметь следующее:
- Настроена проверка подлинности Azure Databricks.
- Рекомендуется использовать интегрированную среду разработки (IDE) с совместимостью Scala. Databricks рекомендует IntelliJ IDEA с подключаемым модулем Scala. Эти инструкции были протестированы с помощью IntelliJ IDEA Community Edition 2023.3.6. Если вы используете другую версию или выпуск IntelliJ IDEA, следующие инструкции могут отличаться.
- Пакет средств разработки Java (JDK), совместимый с Java 8 или более поздней версией. Если вы хотите запустить приложения или использовать библиотеки в кластере Azure Databricks, Databricks рекомендует использовать версию JDK, соответствующую версии JDK в кластере. Чтобы найти версию JDK, включенную в определенную среду выполнения Databricks, см . заметки о выпуске Databricks Runtime и совместимость. При использовании IntelliJ IDEA можно выбрать существующую локальную установку JDK или установить новый JDK локально во время создания проекта Scala.
- Средство сборки Scala. Databricks рекомендует
sbt
. Если вы используете IntelliJ IDEA, можно выбрать версию, используемуюsbt
во время создания проекта Scala. - Scala. Если вы хотите запустить приложения или использовать библиотеки в кластере Azure Databricks, Databricks рекомендует использовать версию Scala, соответствующую версии Scala в кластере. Чтобы найти версию Scala, включенную в определенную среду выполнения Databricks, ознакомьтесь с версиями заметок о выпуске Databricks Runtime и совместимостью. Если вы используете IntelliJ IDEA, можно выбрать версию Scala для использования во время создания проекта Scala.
Чтобы настроить, выполнить сборку и запуск проекта Scala, выполните следующую команду:
В файле проекта
build.sbt
получите зависимость от пакета SDK Databricks для Java, добавив следующую строку в конец файла, а затем сохраните файл:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Примечание.
Не забудьте заменить
0.2.0
последнюю версию пакета SDK Databricks для библиотеки Java. Последнюю версию можно найти в центральном репозитории Maven.Укажите проекту принять объявленную зависимость от пакета SDK Databricks для Java. Например, в IntelliJ IDEA щелкните значок уведомления об изменениях load sbt.
Добавьте код для импорта пакета SDK Databricks для Java и перечисления всех кластеров в рабочей области 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()
, пакет SDK Databricks для Java использует свой процесс по умолчанию для проверки подлинности Azure Databricks. Чтобы переопределить это поведение по умолчанию, см. следующий раздел проверки подлинности .Выполните сборку проекта. Например, чтобы сделать это в IntelliJ IDEA, в главном меню щелкните "Построить проект сборки>".
Запустите основной файл. Например, чтобы сделать это в IntelliJ IDEA для файла проекта
Main.scala
, в главном меню нажмите кнопку Run Run > 'Main.scala'.Появится список кластеров. Например, в IntelliJ IDEA это в окне средства запуска . Чтобы отобразить это окно средства, в главном меню выберите команду "Просмотр > инструментов", чтобы запустить windows>.
Использование служебных программ Databricks и Scala с пакетом SDK Databricks для Java
Служебные программы Databricks предоставляют несколько вспомогательных функций, чтобы упростить работу с хранилищем объектов эффективно, цепочку и параметризацию записных книжек и работать с секретами. Databricks предоставляет служебные программы Databricks для Scala , чтобы обеспечить программный доступ к служебным программам Databricks с Scala.
Чтобы вызвать служебные программы Databricks для Scala, сделайте следующее:
В проекте Scala объявите зависимость от пакета SDK Databricks для Java, как описано в предыдущем разделе.
Объявите зависимость от библиотеки Databricks Utilities для Scala. Например, в файле проекта
build.sbt
добавьте следующую строку в конец файла, а затем сохраните файл:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Примечание.
Обязательно замените
0.1.4
последнюю версию библиотеки Databricks Utilities для Scala. Последнюю версию можно найти в центральном репозитории Maven.Укажите проекту, чтобы принять объявленную зависимость от служебных программ Databricks для Scala. Например, в IntelliJ IDEA щелкните значок уведомления об изменениях load sbt.
Добавьте код для импорта и вызовите служебную программу Databricks для Scala. Например, следующий код автоматизирует том каталога 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()
, Databricks Utilities for Scala использует свой процесс по умолчанию для проверки подлинности Azure Databricks.Чтобы переопределить это поведение по умолчанию, передайте экземпляр
DatabricksCfg
объекта в качестве аргументаgetDBUtils
. Дополнительные сведения см. в предыдущем разделе проверки подлинности .Обратите внимание, что если код выполняется внутри среды выполнения Databricks, этот
DatabricksCfg
объект игнорируется. Это связано с тем, что служебные программы Databricks для Scala делегаты встроенных служебных программ Databricks при выполнении внутри среды выполнения Databricks.Создайте проект и запустите основной файл.
Чтобы получить доступ к томам каталога Unity, используйте files
внутри WorkspaceClient
. См. раздел "Управление файлами" в томах каталога Unity. Невозможно использовать DBUtils.getDBUtils()
для доступа к томам.
Тестирование
Чтобы протестировать код, используйте платформы тестирования Java, такие как JUnit. Чтобы протестировать код в имитированных условиях без вызова конечных точек REST API Azure Databricks или изменения состояния учетных записей Или рабочих областей 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);
}
}
Дополнительные ресурсы
Дополнительные сведения см. в разделе:
- Пакет SDK Databricks для Java README
- Справочник по пакету SDK Databricks для API Java
- Дополнительные примеры кода
- Ведение журнала
- Длительные операции
- Ответы с разбивкой на страницы