SDK do Databricks para Java
Neste artigo, você aprenderá como fazer para automatizar operações em contas, workspaces do Azure Databricks e recursos relacionados com o SDK do Databricks para Java. Este artigo complementa o LEIAME do Java, a referência de API e os exemplos do SDK do Databricks para Java.
Observação
Esse 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
para Maven. Para obter mais informações sobre como fixar dependências, consulte Introdução ao Mecanismo de Dependência.
Antes de começar
Antes de começar a utilizar o SDK do Databricks para Java, seu computador de desenvolvimento deve ter:
- A autenticação do Azure Databricks configurada.
- Um kit de desenvolvimento Java (JDK) compatível com Java 8 ou superior. O teste de integração contínua (CI) com o SDK do Databricks para 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. O Databricks recomenda o IntelliJ IDEA.
Introdução ao SDK do Databricks para Java
No arquivo
pom.xml
do seu projeto, instrua seu sistema de compilação a obter uma dependência do SDK do Databricks para Java. Para fazer isso, adicione o seguinte<dependency>
à seção<dependencies>
existente no arquivopom.xml
. Se a seção<dependencies>
ainda não existir no arquivopom.xml
, você também deverá adicionar o elemento pai<dependencies>
ao arquivopom.xml
.Por exemplo, para abrir o arquivo do projeto
pom.xml
no IntelliJ IDEA, clique em Exibir > Janelas de ferramentas > Projeto e clique duas vezes para abrir your-project-name> src >pom.xml.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Observação
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 de ferramentas Projeto do seu projeto, clique com o botão direito do mouse no nó raiz do projeto e, em seguida, clique em Recarregar Projeto.
Adicione o código para importar o SDK do Databricks para Java e para listar todos os clusters em seu workspace do Azure Databricks. Por exemplo, no arquivo
Main.java
de 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()); } } }
Observação
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 autenticação a seguir.Compile o projeto. Por exemplo, para fazer isso no IntelliJ IDEA, no menu principal, clique em Compilar > Projeto de Compilação.
Executar seu arquivo principal. Por exemplo, para fazer isso no IntelliJ IDEA para o arquivo
Main.java
de um projeto, no menu principal, clique em Executar >. Executar 'Main'.É exibida a lista de clusters. Por exemplo, no IntelliJ IDEA, isso ocorre na janela da ferramenta Executar. Para exibir essa janela de ferramentas, no menu principal, clique em Visualizar > Janelas de Ferramentas > Executar.
Autenticar o SDK do Databricks para Java com sua conta ou workspace do Azure Databricks
O SDK do Databricks para Java implementa o padrão de autenticação unificada de cliente do 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 centralizada e previsível. Ele permite que você configure a autenticação do Databricks uma vez e use essa configuração em várias ferramentas e SDKs do Databricks sem mais alterações na configuração da autenticação. Para obter mais informações, incluindo exemplos de código mais completos em Java, consulte Autenticação unificada de cliente do Databricks.
Observação
O SDK do Databricks para Java ainda não implementou a autenticação de identidades gerenciadas do Azure.
Alguns dos padrões de código disponíveis para inicializar a autenticação do Databricks com o SDK do Databricks para Java incluem:
Use a autenticação padrão do Databricks executando um destes procedimentos:
- Criar ou identificar um perfil de configuração do Databricks personalizado com os campos obrigatórios para o tipo de autenticação do Databricks de destino. Em seguida, defina a variável de ambiente
DATABRICKS_CONFIG_PROFILE
para o nome do perfil de configuração personalizado. - Defina as variáveis de ambiente necessárias para o tipo de autenticação do Databricks de destino.
Em seguida, crie uma instância, por exemplo, de um objeto
WorkspaceClient
com a autenticação padrão do Databricks da seguinte maneira:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Criar ou identificar um perfil de configuração do Databricks personalizado com os campos obrigatórios para o tipo de autenticação do Databricks de destino. Em seguida, defina a variável de ambiente
A codificação 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 os valores de host e token de acesso do Azure Databricks para autenticação de token do Databricks:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Confira também Autenticação no LEIAME do SDK do Databricks para Java.
Usar Utilitários do Databricks e Java com o SDK do Databricks para Java
Os Utilitários do Databricks fornecem várias funções auxiliares para facilitar o trabalho com o armazenamento de objetos com eficiência, encadear e parametrizar notebooks e trabalhar com segredos. O Databricks fornece uma biblioteca de Utilitários do Databricks para Scala, que você pode chamar com código Java, para permitir que você acesse programaticamente os Utilitários do Databricks.
Para usar o código Java para chamar os Utilitários do Databricks para Scala, faça o seguinte:
Em seu projeto Java, declare uma dependência do SDK do Databricks para Java, conforme descrito na seção anterior.
Declare uma dependência nos Utilitários do Databricks para a biblioteca Scala. Para fazer isso, adicione o
<dependency>
a seguir à seçãopom.xml
existente do arquivo<dependencies>
:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Observação
Certifique-se de substituir
0.1.4
pela versão mais recente da biblioteca de Utilitários do Databricks para Scala. Você pode encontrar a versão mais recente no repositório central do Maven.Instrua seu projeto a assumir a dependência declarada nos Utilitários do Databricks para Scala. Por exemplo, no IntelliJ IDEA, na janela de ferramentas Projeto do seu projeto, clique no nó raiz do projeto e, em seguida, clique em Maven > Recarregar Projeto.
Adicione código para importar e, em seguida, chame o Utilitário do Databricks para Scala. Por exemplo, o código a seguir automatiza um volume do Catálogo do Unity. Este exemplo cria um arquivo denominado
zzz_hello.txt
no caminho do volume dentro do workspace, 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 o arquivo principal.
Exemplos de código
Os exemplos de código a seguir demonstram como fazer para usar o SDK do Databricks para Java para criar e excluir clusters, criar trabalhos e listar grupos em nível de conta. Esses exemplos de código utilizam o SDK do Databricks para o processo padrão de autenticação do Azure Databricks para Java.
Para obter exemplos de código adicionais, consulte a pasta exemplos no repositório do SDK do Databricks para Java no GitHub.
- Criar um cluster
- Excluir um cluster permanentemente
- Criar um trabalho
- Gerenciar arquivos em volumes do Catálogo do 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 trabalho 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 usa o JDK 17
Observação
O JDK 8 é totalmente suportado. O JDK 17 está na Visualização Pública para Databricks Runtime versões 13.1 e superiores.
Esta seção fornece um guia para a criação de um cluster utilizando 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 Opções avançadas > variáveis de ambiente do >Spark:
JNAME=zulu17-ca-amd64
Excluir um cluster permanentemente
Este exemplo de código exclui permanentemente o cluster com a ID de cluster especificada do workspace.
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 utilizado para executar o notebook especificado no cluster especificado. À medida que esse código é executado, ele obtém o caminho do notebook existente, a 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 do Unity
Este exemplo de código demonstra várias chamadas para a funcionalidade files
em WorkspaceClient
a fim de acessar um volume do Catálogo do 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 de 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 utilizar projetos Scala com o SDK do Databricks para Java. Antes de começar, seu computador de desenvolvimento deve ter:
- A autenticação do Azure Databricks configurada.
- Recomenda-se um ambiente de desenvolvimento integrado (IDE) compatível com o Scala. A Databricks recomenda o IntelliJ IDEA com o plugin Scala. Essas 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 poderão variar.
- Um kit de desenvolvimento Java (JDK) compatível com Java 8 ou superior. Se você deseja executar seus aplicativos ou usar suas bibliotecas em um cluster do Azure Databricks, o Databricks recomenda que você utilize uma versão do JDK que corresponda à versão do JDK no cluster. Para encontrar a versão do JDK incluída em um Databricks Runtime específico, consulte Compatibilidade, versões e notas sobre a versão do Databricks Runtime. Se você utilizar 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 build do Scala. O Databricks recomenda
sbt
. Se você usar o IntelliJ IDEA, poderá escolher a versãosbt
que será utilizada durante a criação do projeto Scala. - Scala. Se você deseja executar seus aplicativos ou usar suas bibliotecas em um cluster do Azure Databricks, a Databricks recomenda que você utilize uma versão do Scala que corresponda à versão do Scala no cluster. Para encontrar a versão do Scala incluída em um Databricks Runtime específico, consulte Compatibilidade, notas sobre a versão e versão do Databricks Runtime. Se você usar o IntelliJ IDEA, poderá escolher a versão do Scala a ser utilizada durante a criação do projeto Scala.
Para configurar, compilar e executar seu projeto Scala:
No arquivo
build.sbt
do seu projeto, crie uma dependência na biblioteca do SDK do Databricks para Java, adicionando a seguinte linha ao final do arquivo e, em seguida, salve o arquivo:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Observação
Certifique-se de substituir
0.2.0
pela versão mais recente da biblioteca 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, clique no ícone de notificação Carregar alterações do sbt.
Adicione o código para importar o SDK do Databricks para Java e para listar todos os clusters em seu workspace do Azure Databricks. Por exemplo, no arquivo
Main.scala
de 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) } } }
Observação
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 autenticação a seguir.Compile o projeto. Por exemplo, para fazer isso no IntelliJ IDEA, no menu principal, clique em Compilar > Projeto de Compilação.
Executar seu arquivo principal. Por exemplo, para fazer isso no IntelliJ IDEA para o arquivo
Main.scala
de um projeto, no menu principal, clique em Executar >. Executar 'Main.scala'.É exibida a lista de clusters. Por exemplo, no IntelliJ IDEA, isso ocorre na janela da ferramenta Executar. Para exibir essa janela de ferramentas, no menu principal, clique em Visualizar > Janelas de Ferramentas > Executar.
Usar os Utilitários do Databricks e o Scala com o SDK do Databricks para Java
Os Utilitários do Databricks fornecem várias funções auxiliares para facilitar o trabalho com o armazenamento de objetos com eficiência, encadear e parametrizar notebooks e trabalhar com segredos. O Databricks fornece uma biblioteca de Utilitários do Databricks para Scala para permitir que você acesse programaticamente os Utilitários do Databricks com o Scala.
Para chamar os Utilitários do Databricks para Scala, faça o seguinte:
Em seu projeto Scala, declare uma dependência do SDK do Databricks para Java, conforme descrito na seção anterior.
Declare uma dependência na biblioteca de Utilitários do Databricks para Scala. Por exemplo, no arquivo
build.sbt
do projeto, adicione a seguinte linha ao final do arquivo e salve o arquivo:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Observação
Certifique-se de substituir
0.1.4
pela versão mais recente da biblioteca de Utilitários do Databricks para Scala. Você pode encontrar a versão mais recente no repositório central do Maven.Instrua seu projeto a assumir a dependência declarada nos Utilitários do Databricks para 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 do Databricks para Scala. Por exemplo, o código a seguir automatiza um volume do Catálogo do Unity. Este exemplo cria um arquivo denominado
zzz_hello.txt
no caminho do volume dentro do workspace, 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) } }
Observação
Ao não definir argumentos na chamada anterior para
val dbutils = DBUtils.getDBUtils()
, os Utilitários do Databricks para Scala usam 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, confira a seção de autenticação anterior.No entanto, observe que, se o código estiver em execução dentro do Databricks Runtime, esse objeto
DatabricksCfg
será ignorado. Isso ocorre porque os Utilitários do Databricks para Scala são delegados aos utilitários internos do Databricks ao serem executados dentro do Databricks Runtime.Crie seu projeto e execute o arquivo principal.
Para acessar volumes do Catálogo do Unity, use files
em WorkspaceClient
. Consulte Gerenciar arquivos em volumes do Catálogo do Unity. Não é possível usar DBUtils.getDBUtils()
para acessar volumes.
Testando
Para testar seu código, use estruturas de teste do 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 workspaces do Azure Databricks, use bibliotecas de simulação do Java, como Mockito.
Por exemplo, dado o seguinte arquivo nomeado Helpers.java
contendo uma função createCluster
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 função 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());
}
}
O arquivo nomeado HelpersTest.java
a seguir testa se a função createCluster
retorna a resposta esperada. Em vez de criar um cluster no workspace de destino, esse teste simula um objeto WorkspaceClient
, define as configurações do objeto simulado e, em seguida, passa o objeto simulado para a função createCluster
. 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 saber mais, veja:
- README do SDK do Databricks para Java
- Referência de API do SDK do Databricks para Java
- Exemplos de código adicionais
- Logging
- Operações de longa duração
- Respostas paginadas