Databricks SDK para Java
Neste artigo, você aprenderá a automatizar operações em contas, espaços de trabalho e recursos relacionados do Azure Databricks com o SDK do Databricks para Java. Este artigo complementa o Databricks SDK para Java README, referência de API e exemplos.
Nota
Este recurso está em Beta e pode ser usado na produção.
Durante o período Beta, o Databricks recomenda que você fixe uma dependência na versão secundária específica do SDK do Databricks para Java da qual seu código depende. Por exemplo, você pode fixar dependências em arquivos como pom.xml
o Maven. Para obter mais informações sobre fixar dependências, consulte Introdução ao mecanismo de dependência.
Antes de começar
Antes de começar a usar o Databricks SDK for Java, sua máquina de desenvolvimento deve ter:
- Autenticação do Azure Databricks configurada.
- Um Java Development Kit (JDK) compatível com Java 8 ou superior. O teste de integração contínua (CI) com o Databricks SDK for Java é compatível com as versões 8, 11, 17 e 20 do Java.
- Recomenda-se um ambiente de desenvolvimento integrado (IDE) compatível com Java. A Databricks recomenda o IntelliJ IDEA.
Introdução ao SDK do Databricks para Java
No arquivo do
pom.xml
seu projeto, instrua seu sistema de compilação a depender do SDK do Databricks para Java. Para fazer isso, adicione o seguinte<dependency>
à seção existente<dependencies>
dopom.xml
arquivo. Se a<dependencies>
seção ainda não existir dentro dopom.xml
arquivo, você também deve adicionar o<dependencies>
elemento pai aopom.xml
arquivo.Por exemplo, para abrir o arquivo do
pom.xml
seu projeto no IntelliJ IDEA, clique em View > Tool Windows > Project e, em seguida, clique duas vezes para abrir o pom.xml src > do nome> do projeto.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Nota
Certifique-se de substituir
0.0.1
pela versão mais recente do SDK do Databricks para Java. Você pode encontrar a versão mais recente no repositório central do Maven.Instrua seu projeto a assumir a dependência declarada no SDK do Databricks para Java. Por exemplo, no IntelliJ IDEA, na janela da ferramenta Projeto do projeto, clique com o botão direito do mouse no nó raiz do projeto e clique em Recarregar Projeto.
Adicione código para importar o SDK do Databricks para Java e listar todos os clusters em seu espaço de trabalho do Azure Databricks. Por exemplo, no arquivo de
Main.java
um projeto, o código pode ser o seguinte: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()); } } }
Nota
Ao não definir nenhum argumento na chamada anterior para
WorkspaceClient w = new WorkspaceClient()
, o SDK do Databricks para Java usa seu processo padrão para tentar executar a autenticação do Azure Databricks. Para substituir esse comportamento padrão, consulte a seção de autenticação a seguir.Recompile o seu projeto. Por exemplo, para fazer isso no IntelliJ IDEA, no menu principal, clique em Build > Build Project.
Execute o ficheiro principal. Por exemplo, para fazer isso no IntelliJ IDEA para o arquivo de
Main.java
um projeto, no menu principal, clique em Executar > 'Principal'.A lista de clusters é exibida. Por exemplo, no IntelliJ IDEA, isso está na janela da ferramenta Executar . Para exibir essa janela de ferramenta, no menu principal, clique em Exibir > Ferramenta Executar do Windows>.
Autenticar o SDK do Databricks para Java com sua conta ou espaço de trabalho do Azure Databricks
O SDK do Databricks para Java implementa o padrão de autenticação unificada do cliente Databricks, uma abordagem arquitetônica e programática consolidada e consistente para autenticação. Essa abordagem ajuda a tornar a configuração e a automação da autenticação com o Azure Databricks mais centralizadas e previsíveis. Ele permite que você configure a autenticação do Databricks uma vez e, em seguida, use essa configuração em várias ferramentas e SDKs do Databricks sem mais alterações na configuração de autenticação. Para obter mais informações, incluindo exemplos de código mais completos em Java, consulte Autenticação unificada do cliente Databricks.
Nota
O SDK do Databricks para Java ainda não implementou a autenticação de identidades gerenciadas do Azure.
Alguns dos padrões de codificação disponíveis para inicializar a autenticação Databricks com o Databricks SDK for Java incluem:
Use a autenticação padrão do Databricks seguindo um destes procedimentos:
- Crie ou identifique um perfil de configuração personalizado do Databricks com os campos necessários para o tipo de autenticação Databricks de destino. Em seguida, defina a
DATABRICKS_CONFIG_PROFILE
variável de ambiente como o nome do perfil de configuração personalizado. - Defina as variáveis de ambiente necessárias para o tipo de autenticação Databricks de destino.
Em seguida, instancie, por exemplo, um
WorkspaceClient
objeto com a autenticação padrão do Databricks da seguinte maneira:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Crie ou identifique um perfil de configuração personalizado do Databricks com os campos necessários para o tipo de autenticação Databricks de destino. Em seguida, defina a
A codificação rígida dos campos obrigatórios é suportada, mas não recomendada, pois corre o risco de expor informações confidenciais em seu código, como tokens de acesso pessoal do Azure Databricks. O exemplo a seguir codifica valores de token de host e acesso do Azure Databricks para autenticação de token Databricks:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Consulte também Autenticação no Databricks SDK for Java README.
Use utilitários Databricks e Java com o SDK Databricks para Java
O Databricks Utilities fornece várias funções auxiliares para facilitar o trabalho com armazenamento de objetos de forma eficiente, encadear e parametrizar notebooks e trabalhar com segredos. O Databricks fornece uma biblioteca Databricks Utilities for Scala , que você pode chamar com código Java, para permitir que você acesse programaticamente o Databricks Utilities.
Para usar o código Java para chamar os utilitários Databricks para Scala, faça o seguinte:
Em seu projeto Java, declare uma dependência no Databricks SDK for Java, conforme descrito na seção anterior.
Declare uma dependência na biblioteca Databricks Utilities for Scala. Para fazer isso, adicione o seguinte
<dependency>
à seção existente<dependencies>
dopom.xml
arquivo:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Nota
Certifique-se de substituir
0.1.4
pela versão mais recente da biblioteca Databricks Utilities for Scala. Você pode encontrar a versão mais recente no repositório central do Maven.Instrua seu projeto a assumir a dependência declarada do Databricks Utilities for Scala. Por exemplo, no IntelliJ IDEA, na janela da ferramenta Project do seu projeto, clique no nó raiz do seu projeto e, em seguida, clique em Maven > Reload Project.
Adicione código para importar e, em seguida, chame o utilitário Databricks para Scala. Por exemplo, o código a seguir automatiza um volume do Catálogo Unity. Este exemplo cria um arquivo nomeado
zzz_hello.txt
no caminho do volume dentro do espaço de trabalho, lê os dados do arquivo e exclui o arquivo: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); } }
Crie seu projeto e execute seu arquivo principal.
Exemplos de código
Os exemplos de código a seguir demonstram como usar o Databricks SDK for Java para criar e excluir clusters, criar trabalhos e listar grupos no nível da conta. Estes exemplos de código usam o SDK do Databricks para o processo de autenticação padrão do Azure Databricks do Java.
Para obter exemplos de código adicionais, consulte a pasta de exemplos no repositório Databricks SDK for Java no GitHub.
- Criar um cluster
- Excluir permanentemente um cluster
- Criar um emprego
- Gerenciar arquivos em volumes do Catálogo Unity
- Listar grupos no nível da conta
Criar um cluster
Este exemplo de código cria um cluster com a versão especificada do Databricks Runtime e o tipo de nó do cluster. Esse cluster tem um trabalhador e o cluster será encerrado automaticamente após 15 minutos de tempo ocioso.
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");
}
}
Criar um cluster que use o JDK 17
Nota
O JDK 8 é totalmente suportado. O JDK 17 está no Public Preview for Databricks Runtime versões 13.1 e superiores.
Esta seção fornece um guia para criar um cluster usando o Java Development Kit (JDK). Saiba como criar um cluster com o JDK 17 para usar Java em seus blocos de anotações e trabalhos.
Ao criar um cluster, especifique que o cluster usa o JDK 17 para o driver e o executor adicionando a seguinte variável de ambiente às Variáveis de Ambiente do Spark > de Opções > Avançadas:
JNAME=zulu17-ca-amd64
Excluir permanentemente um cluster
Este exemplo de código exclui permanentemente o cluster com a ID de cluster especificada do espaço de trabalho.
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);
}
}
Criar um trabalho
Este exemplo de código cria um trabalho do Azure Databricks que pode ser usado para executar o bloco de anotações especificado no cluster especificado. À medida que esse código é executado, ele obtém o caminho do bloco de anotações existente, o ID do cluster existente e as configurações de trabalho relacionadas do usuário no terminal.
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()
);
}
}
Gerenciar arquivos em volumes do Catálogo Unity
Este exemplo de código demonstra várias chamadas para files
funcionalidade dentro WorkspaceClient
para acessar um volume do Catálogo 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);
}
}
Listar grupos no nível da conta
Este exemplo de código lista os nomes para exibição de todos os grupos disponíveis na conta do 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());
}
}
}
Usar o Scala com o SDK do Databricks para Java
Você pode usar projetos Scala com o Databricks SDK for Java. Antes de começar, sua máquina de desenvolvimento deve ter:
- Autenticação do Azure Databricks configurada.
- Recomenda-se um ambiente de desenvolvimento integrado (IDE) compatível com Scala. A Databricks recomenda o IntelliJ IDEA com o plugin Scala. Estas instruções foram testadas com o IntelliJ IDEA Community Edition 2023.3.6. Se você usar uma versão ou edição diferente do IntelliJ IDEA, as instruções a seguir podem variar.
- Um Java Development Kit (JDK) compatível com Java 8 ou superior. Se você quiser executar seus aplicativos ou usar suas bibliotecas em um cluster do Azure Databricks, o Databricks recomenda que você use uma versão do JDK que corresponda à versão do JDK no cluster. Para localizar a versão do JDK incluída em um Databricks Runtime específico, consulte Versões e compatibilidade das notas de versão do Databricks Runtime. Se você usar o IntelliJ IDEA, poderá escolher uma instalação local existente do JDK ou instalar um novo JDK localmente durante a criação do projeto Scala.
- Uma ferramenta de construção Scala. Databricks recomenda
sbt
. Se você usa o IntelliJ IDEA, pode escolher a versão a ser usada durante a criação dosbt
projeto Scala. - Scala. Se você quiser executar seus aplicativos ou usar suas bibliotecas em um cluster do Azure Databricks, o Databricks recomenda que você use uma versão do Scala que corresponda à versão do Scala no cluster. Para localizar a versão do Scala incluída em um Databricks Runtime específico, consulte Versões e compatibilidade das notas de versão do Databricks Runtime. Se você usa o IntelliJ IDEA, pode escolher a versão Scala para usar durante a criação do projeto Scala.
Para configurar, compilar e executar seu projeto Scala:
No arquivo do
build.sbt
seu projeto, dependa da biblioteca Databricks SDK for Java adicionando a seguinte linha ao final do arquivo e salve o arquivo:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Nota
Certifique-se de substituir
0.2.0
pela versão mais recente da biblioteca Databricks SDK for Java. Você pode encontrar a versão mais recente no repositório central do Maven.Instrua seu projeto a assumir a dependência declarada no SDK do Databricks para Java. Por exemplo, no IntelliJ IDEA, clique no ícone de notificação Carregar alterações do sbt .
Adicione código para importar o SDK do Databricks para Java e listar todos os clusters em seu espaço de trabalho do Azure Databricks. Por exemplo, no arquivo de
Main.scala
um projeto, o código pode ser o seguinte: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) } } }
Nota
Ao não definir nenhum argumento na chamada anterior para
val w = new WorkspaceClient()
, o SDK do Databricks para Java usa seu processo padrão para tentar executar a autenticação do Azure Databricks. Para substituir esse comportamento padrão, consulte a seção de autenticação a seguir.Recompile o seu projeto. Por exemplo, para fazer isso no IntelliJ IDEA, no menu principal, clique em Build > Build Project.
Execute o ficheiro principal. Por exemplo, para fazer isso no IntelliJ IDEA para o arquivo de
Main.scala
um projeto, no menu principal, clique em Executar > Executar 'Main.scala'.A lista de clusters é exibida. Por exemplo, no IntelliJ IDEA, isso está na janela da ferramenta Executar . Para exibir essa janela de ferramenta, no menu principal, clique em Exibir > Ferramenta Executar do Windows>.
Usar utilitários Databricks e Scala com o SDK Databricks para Java
O Databricks Utilities fornece várias funções auxiliares para facilitar o trabalho com armazenamento de objetos de forma eficiente, encadear e parametrizar notebooks e trabalhar com segredos. O Databricks fornece uma biblioteca Databricks Utilities for Scala para permitir que você acesse programaticamente o Databricks Utilities com o Scala.
Para chamar os utilitários Databricks para Scala, faça o seguinte:
Em seu projeto Scala, declare uma dependência do Databricks SDK for Java, conforme descrito na seção anterior.
Declare uma dependência na biblioteca Databricks Utilities for Scala. Por exemplo, no arquivo do
build.sbt
seu projeto, adicione a seguinte linha ao final do arquivo e salve o arquivo:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Nota
Certifique-se de substituir
0.1.4
pela versão mais recente da biblioteca Databricks Utilities for Scala. Você pode encontrar a versão mais recente no repositório central do Maven.Instrua seu projeto a assumir a dependência declarada do Databricks Utilities for Scala. Por exemplo, no IntelliJ IDEA, clique no ícone de notificação Carregar alterações do sbt .
Adicione código para importar e, em seguida, chame o utilitário Databricks para Scala. Por exemplo, o código a seguir automatiza um volume do Catálogo Unity. Este exemplo cria um arquivo nomeado
zzz_hello.txt
no caminho do volume dentro do espaço de trabalho, lê os dados do arquivo e exclui o arquivo: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) } }
Nota
Ao não definir nenhum argumento na chamada anterior para
val dbutils = DBUtils.getDBUtils()
, o Databricks Utilities for Scala usa seu processo padrão para tentar executar a autenticação do Azure Databricks.Para substituir esse comportamento padrão, passe um objeto instanciado
DatabricksCfg
como um argumento paragetDBUtils
. Para obter mais informações, consulte a seção de autenticação anterior.Observe, no entanto, que se seu código estiver sendo executado dentro do Databricks Runtime, esse
DatabricksCfg
objeto será ignorado. Isso ocorre porque os Utilitários Databricks para Scala delegam aos Utilitários Databricks internos quando executados dentro do Databricks Runtime.Crie seu projeto e execute seu arquivo principal.
Para acessar os volumes do Catálogo Unity, use files
em WorkspaceClient
. Consulte Gerenciar arquivos em volumes do Catálogo Unity. Não é possível usar DBUtils.getDBUtils()
para acessar volumes.
Testar
Para testar seu código, use estruturas de teste Java, como JUnit. Para testar seu código em condições simuladas sem chamar pontos de extremidade da API REST do Azure Databricks ou alterar o estado de suas contas ou espaços de trabalho do Azure Databricks, use bibliotecas simuladas Java, como o Mockito.
Por exemplo, dado o seguinte arquivo chamado Helpers.java
contendo uma createCluster
função que retorna informações sobre o novo cluster:
// 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();
}
}
E dado o seguinte arquivo chamado Main.java
que chama a createCluster
função:
// 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());
}
}
O arquivo a seguir chamado HelpersTest.java
testa se a createCluster
função retorna a resposta esperada. Em vez de criar um cluster no espaço de trabalho de destino, esse teste simula um WorkspaceClient
objeto, define as configurações do objeto simulado e, em seguida, passa o objeto simulado para a createCluster
função. Em seguida, o teste verifica se a função retorna a ID esperada do novo cluster simulado.
// 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);
}
}
Recursos adicionais
Para obter mais informações, consulte:
- Databricks SDK para Java README
- Referência do Databricks SDK for Java API
- Exemplos de código adicionais
- Registo
- Operações de longa duração
- Respostas paginadas