Databricks SDK para Java
Databricks recomenda o Databricks ativo Bundles para criar, desenvolver, implantar e testar o Job e outros Databricks recursos como código-fonte. Veja o que são Databricks ativo Bundles?
Neste artigo, o senhor aprenderá como automatizar Databricks operações e acelerar o desenvolvimento com o Databricks SDK para Java. Este artigo complementa o Databricks SDK para Java README, API referência e exemplos.
Esse recurso está na versão beta e não pode ser usado na produção.
Durante o período beta, Databricks recomenda que o senhor pin uma dependência da versão secundária específica do Databricks SDK para Java da qual seu código depende. Por exemplo, o senhor pode pin dependências em arquivos como pom.xml
para Maven. Para obter mais informações sobre a fixação de dependências, consulte Introdução ao mecanismo de dependência.
Antes de começar
Antes de começar a usar o SDK da Databricks para Java, sua máquina de desenvolvimento deve ter:
- Autenticação do Databricks configurada.
- Um Java Development Kit (JDK) compatível com Java 8 ou acima. O teste de integração contínua (CI) com o Databricks SDK para Java é compatível com as versões 8, 11, 17 e 20 do Java.
- Um ambiente de desenvolvimento integrado (IDE) compatível com Java é recomendado. A Databricks recomenda o IntelliJ IDEA.
Comece a usar o Databricks SDK para Java
-
No arquivo
pom.xml
do seu projeto, instrua o sistema de compilação a obter uma dependência do SDK da Databricks para Java. Para fazer isso, adicione o<dependency>
a seguir à seção<dependencies>
existente do 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
pom.xml
do seu projeto em IntelliJ IDEA, clique em view > Tool Windows > Project e, em seguida, clique duas vezes para abrir your-project-name > src > pom.xml .XML<dependencies>
<dependency>
<groupId>com.databricks</groupId>
<artifactId>databricks-sdk-java</artifactId>
<version>0.0.1</version>
</dependency>
</dependencies>
Certifique-se de substituir 0.0.1
pela versão mais recente do Databricks SDK for Java. O senhor pode encontrar a versão mais recente no repositório central do Maven.
-
Instrua seu projeto a assumir a dependência declarada do Databricks SDK para Java. Por exemplo, no IntelliJ IDEA, na janela da ferramenta Projeto do seu 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 Databricks SDK para Java e para listar todos os clusters em seu Databricks workspace. Por exemplo, no arquivo
Main.java
de um projeto, o código pode ser o seguinte:Javaimport 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());
}
}
}
Ao não definir nenhum argumento na chamada anterior para WorkspaceClient w = new WorkspaceClient()
, o Databricks SDK para Java usa seu processo default para tentar realizar a autenticação Databricks. Para substituir esse comportamento do default, consulte a seção de autenticação a seguir.
-
Crie seu projeto. Por exemplo, para fazer isso no IntelliJ IDEA, no menu principal, clique em Build > Build Project .
-
execução de seu arquivo principal. Por exemplo, para fazer isso em IntelliJ IDEA para o arquivo
Main.java
de um projeto, no menu principal, clique em execução > execução 'Main'. -
A lista de clustering é exibida. Por exemplo, em IntelliJ IDEA, isso ocorre na janela da ferramenta de execução . Para exibir essa janela de ferramenta, no menu principal, clique em view > Tool Windows > execução .
Autentique o Databricks SDK para Java com seu Databricks account ou workspace
O Databricks SDK 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 automatização da autenticação com o Databricks mais centralizada e previsível. Ele permite que o senhor configure a autenticação do Databricks uma vez e, em seguida, use essa configuração em várias ferramentas e SDKs do Databricks sem outras alterações na configuração da autenticação. Para obter mais informações, incluindo exemplos de código mais completos em Java, consulte Databricks autenticação unificada de cliente.
Alguns dos padrões de codificação disponíveis para inicializar a autenticação da Databricks com o SDK da Databricks para 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 de destino do Databricks. Em seguida, defina a variável de ambiente
DATABRICKS_CONFIG_PROFILE
com 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, instancie, por exemplo, um objeto
WorkspaceClient
com autenticação default do Databricks da seguinte maneira:Javaimport 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 de destino do Databricks. Em seguida, defina a variável de ambiente
-
Embora seja possível codificar diretamente os campos necessários, não é aconselhável, pois isso pode expor informações confidenciais em seu código, como access tokens pessoais do Databricks. O exemplo a seguir codifica o host do Databricks e valores de access token para autenticação de token do Databricks:
Javaimport 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 LEIAME do Databricks SDK para Java.
Use Databricks utilidades e Java com o Databricks SDK para Java
Databricks O utilidades fornece várias funções auxiliares para facilitar o trabalho com o armazenamento de objetos de forma eficiente, encadear e parametrizar o Notebook e trabalhar com segredos. Databricks fornece um Databricks utilidades para Scala biblioteca, que pode ser chamado com o código Java, para permitir que o senhor acesse programaticamente Databricks utilidades.
Para usar o código Java para chamar as utilidades Databricks para Scala, faça o seguinte:
-
Em seu projeto Java, declare uma dependência do Databricks SDK for Java, conforme descrito na seção anterior.
-
Declarar uma dependência do site Databricks utilidades para Scala biblioteca. Para fazer isso, adicione o
<dependency>
a seguir à seção<dependencies>
existente do arquivopom.xml
:XML<dependency>
<groupId>com.databricks</groupId>
<artifactId>databricks-dbutils-scala_2.12</artifactId>
<version>0.1.4</version>
</dependency>
Certifique-se de substituir 0.1.4
pela versão mais recente do site Databricks utilidades para Scala biblioteca. O senhor pode encontrar a versão mais recente no repositório central do Maven.
-
Instrua seu projeto a assumir a dependência declarada no site Databricks utilidades para Scala. Por exemplo, no IntelliJ IDEA, na janela da ferramenta Projeto do seu projeto, clique no nó raiz do projeto e, em seguida, clique em Maven > Reload Project .
-
Adicione código para importar e, em seguida, chame os utilitários Databricks para Scala. Por exemplo, o código a seguir automatiza um volume do Unity Catalog. Este exemplo cria um arquivo chamado
zzz_hello.txt
no caminho do volume dentro do site workspace, lê os dados do arquivo e, em seguida, exclui o arquivo:Javaimport 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);
}
} -
Compile seu projeto e execute seu arquivo principal.
Exemplos de código
Os exemplos de código a seguir demonstram como usar o Databricks SDK para Java para criar e excluir clustering, criar Job e listar account-level groups. Esses exemplos de código usam o Databricks SDK para Javao default Databricks processo de autenticação do's .
Para obter exemplos de código adicionais, consulte a pasta de exemplos no repositório do Databricks SDK para Java no GitHub.
Criar um clustering
Este exemplo de código cria um cluster com a versão especificada do Databricks Runtime e o tipo de nó de cluster. Este cluster tem um worker e será encerrado automaticamente após 15 minutos parado.
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("n2-highmem-4")
.setAutoterminationMinutes(15L)
.setNumWorkers(1L)
).getResponse();
System.out.println("View the cluster at " +
w.config().getHost() +
"#setting/clusters/" +
c.getClusterId() +
"/configuration\n");
}
}
Criar um clustering que use o JDK 17
Para o Databricks Runtime 16.0 ou acima, o JDK 17 está geralmente disponível e o default. Para as versões 13.1 a 15.4 do Databricks Runtime, o JDK 8 é o default, e o JDK 17 está em Public Preview.
Esta seção fornece um guia para a criação de um clustering usando o Java Development Kit (JDK). Saiba como criar um clustering com o JDK 17 para usar o Java em seu Notebook e Job.
Quando o senhor criar um cluster, especifique que o cluster usa o JDK 17 para o driver e o site executor adicionando a seguinte variável de ambiente a Advanced Options > Spark > variável de ambiente :
JAVA_HOME=/usr/lib/jvm/zulu17-ca-amd64
Em seguida, aplique o seguinte init script. Consulte Script de inicialização com escopo de cluster para obter mais informações sobre o script de inicialização.
set -e
JNAME="zulu17-ca-amd64"
update-java-alternatives -s $JNAME
JNAME_PATH=`update-java-alternatives -l $JNAME | awk '{print $3}'`
echo "JAVA_HOME=$JNAME_PATH" >> /etc/environment
Excluir permanentemente um clustering
Este exemplo de código exclui permanentemente o cluster com o ID de cluster especificado 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
Esse exemplo de código cria um trabalho Databricks que pode ser usado para executar o Notebook especificado no clustering especificado. Ao executar esse código, ele obtém o caminho do Notebook existente, o ID de clustering 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 Unity Catalog volumes
Este exemplo de código demonstra várias chamadas para a funcionalidade files
em WorkspaceClient
para acessar um volume do Unity Catalog.
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);
}
}
Lista account-level groups
Este exemplo de código lista os nomes de exibição de todos os grupos disponíveis na conta do 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());
}
}
}
Use o Scala com o SDK da Databricks para Java
O senhor pode usar projetos Scala com o Databricks SDK para Java. Antes de começar, sua máquina de desenvolvimento deve ter:
- Autenticação do Databricks configurada.
- Recomenda-se um ambiente de desenvolvimento integrado (IDE) compatível com Scala. A Databricks recomenda o IntelliJ IDEA com o plug-in Scala. Essas instruções foram testadas com o IntelliJ IDEA Community Edition 2023.3.6. Se o senhor usar uma versão ou edição diferente do IntelliJ IDEA, as instruções a seguir poderão variar.
- Um Java Development Kit (JDK) compatível com Java 8 ou acima. Se quiser executar seus aplicativos ou usar sua biblioteca em um cluster Databricks, o site Databricks recomenda que o senhor use uma versão do JDK que corresponda à versão do JDK no cluster. Para saber qual versão do JDK está incluída em um site específico Databricks Runtime, consulte Databricks Runtime notas sobre versões e compatibilidade. Se o senhor usar o IntelliJ IDEA, poderá escolher uma instalação local do JDK existente ou instalar um novo JDK localmente durante a criação do projeto Scala.
- Uma ferramenta de construção Scala. A Databricks recomenda o site
sbt
. Se o senhor usar o IntelliJ IDEA, poderá escolher a versão dosbt
a ser usada durante a criação do projeto Scala. - Scala. Se quiser executar seus aplicativos ou usar sua biblioteca em um cluster Databricks, o Databricks recomenda que o senhor use uma versão do Scala que corresponda à versão do Scala no cluster. Para encontrar a versão Scala que está incluída em um Databricks Runtime específico, consulte Databricks Runtime notas sobre versões e compatibilidade. Se o senhor usar o IntelliJ IDEA, poderá escolher a versão do Scala a ser usada durante a criação do projeto Scala.
Para configurar, criar e executar seu projeto Scala:
-
No arquivo
build.sbt
do seu projeto, crie uma dependência da biblioteca Databricks SDK for Java adicionando a seguinte linha ao final do arquivo e, em seguida, salve o arquivo:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Certifique-se de substituir 0.2.0
pela versão mais recente da biblioteca Databricks SDK for Java. O senhor pode encontrar a versão mais recente no repositório central do Maven.
-
Instrua seu projeto a assumir a dependência declarada do Databricks SDK para Java. Por exemplo, no IntelliJ IDEA, clique no ícone de notificação Load sbt changes .
-
Adicione código para importar o Databricks SDK para Java e para listar todos os clusters em seu Databricks workspace. Por exemplo, no arquivo
Main.scala
de um projeto, o código pode ser o seguinte:Scalaimport 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)
}
}
}
Ao não definir nenhum argumento na chamada anterior para val w = new WorkspaceClient()
, o Databricks SDK para Java usa seu processo default para tentar realizar a autenticação Databricks. Para substituir esse comportamento do default, consulte a seção de autenticação a seguir.
-
Crie seu projeto. Por exemplo, para fazer isso no IntelliJ IDEA, no menu principal, clique em Build > Build Project .
-
execução de seu arquivo principal. Por exemplo, para fazer isso em IntelliJ IDEA para o arquivo
Main.scala
de um projeto, no menu principal, clique em execução > execução 'Main.Scala'. -
A lista de clustering é exibida. Por exemplo, em IntelliJ IDEA, isso ocorre na janela da ferramenta de execução . Para exibir essa janela de ferramenta, no menu principal, clique em view > Tool Windows > execução .
Use Databricks utilidades e Scala com o Databricks SDK para Java
Databricks O utilidades fornece várias funções auxiliares para facilitar o trabalho com o armazenamento de objetos de forma eficiente, encadear e parametrizar o Notebook e trabalhar com segredos. Databricks fornece um Databricks utilidades para Scala biblioteca para permitir que o senhor acesse programaticamente Databricks utilidades com Scala.
Para chamar o Databricks utilidades 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.
-
Declarar uma dependência do site Databricks utilidades para Scala biblioteca. Por exemplo, no arquivo
build.sbt
do seu projeto, adicione a seguinte linha ao final do arquivo e salve-o:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Certifique-se de substituir 0.1.4
pela versão mais recente do site Databricks utilidades para Scala biblioteca. O senhor pode encontrar a versão mais recente no repositório central do Maven.
-
Instrua seu projeto a assumir a dependência declarada no site Databricks utilidades para Scala. Por exemplo, no IntelliJ IDEA, clique no ícone de notificação Load sbt changes .
-
Adicione código para importar e, em seguida, chame os utilitários Databricks para Scala. Por exemplo, o código a seguir automatiza um volume do Unity Catalog. Este exemplo cria um arquivo chamado
zzz_hello.txt
no caminho do volume dentro do site workspace, lê os dados do arquivo e, em seguida, exclui o arquivo:Scalaimport 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)
}
}
Ao não definir nenhum argumento na chamada anterior para val dbutils = DBUtils.getDBUtils()
, Databricks utilidades para Scala usa seu processo default para tentar realizar a autenticação Databricks.
Para substituir esse comportamento do default, passe um objeto DatabricksCfg
instanciado como argumento para getDBUtils
. Para obter mais informações, consulte a seção de autenticação anterior.
Observe, no entanto, que se o seu código estiver sendo executado dentro do Databricks Runtime, esse objeto DatabricksCfg
será ignorado. Isso ocorre porque o Databricks utilidades for Scala delega ao Databricks utilidades integrado quando executado dentro do Databricks Runtime.
- Compile seu projeto e execute seu arquivo principal.
Para acessar os volumes do Unity Catalog, use files
em WorkspaceClient
. Consulte gerenciar arquivos em Unity Catalog volumes. Você não pode usar DBUtils.getDBUtils()
para acessar volumes.
Testando
Para testar seu código, use estruturas de teste Java, como o JUnit. Para testar seu código em condições simuladas sem chamar o endpoint Databricks REST API ou alterar o estado de sua conta ou espaço de trabalho Databricks, use a biblioteca de simulação Java, como o Mockito.
Por exemplo, dado o seguinte arquivo chamado 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 seguinte arquivo chamado HelpersTest.java
testa se a função createCluster
retorna a resposta esperada. Em vez de criar um cluster no workspace de destino, este teste simula um objeto WorkspaceClient
, define as configurações do objeto simulado e, em seguida, passa o objeto simulado para a função createCluster
. O teste verifica se a função retorna o ID esperado 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);
}
}
Recurso adicional
Para saber mais, consulte:
-
LEIAME doDatabricks SDK para Java
-
Referência da APIdo Databricks SDK para Java