Databricks SDK för Java
I den här artikeln får du lära dig hur du automatiserar åtgärder i Azure Databricks-konton, arbetsytor och relaterade resurser med Databricks SDK för Java. Den här artikeln kompletterar Databricks SDK för Java README, API-referens och exempel.
Kommentar
Den här funktionen är i Beta och är okej att använda i produktion.
Under betaperioden rekommenderar Databricks att du fäster ett beroende på den specifika delversionen av Databricks SDK för Java som koden är beroende av. Du kan till exempel fästa beroenden i filer som pom.xml
för Maven. Mer information om hur du fäster beroenden finns i Introduktion till beroendemekanismen.
Innan du börjar
Innan du börjar använda Databricks SDK för Java måste utvecklingsdatorn ha:
- Azure Databricks-autentisering har konfigurerats.
- Ett Java Development Kit (JDK) som är kompatibelt med Java 8 eller senare. Testning av kontinuerlig integrering (CI) med Databricks SDK för Java är kompatibelt med Java-versionerna 8, 11, 17 och 20.
- En Java-kompatibel integrerad utvecklingsmiljö (IDE) rekommenderas. Databricks rekommenderar IntelliJ IDEA.
Kom igång med Databricks SDK för Java
I projektets
pom.xml
fil instruerar du byggsystemet att vara beroende av Databricks SDK för Java. Det gör du genom att lägga till följande<dependency>
ipom.xml
filens befintliga<dependencies>
avsnitt. Om avsnittet<dependencies>
inte redan finns ipom.xml
filen måste du också lägga till det<dependencies>
överordnade elementet ipom.xml
filen.Om du till exempel vill öppna projektets
pom.xml
fil i IntelliJ IDEA klickar du på Visa > verktyget Windows > Project och dubbelklickar sedan på för att öppna ditt projektnamn> src > pom.xml.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Kommentar
Ersätt
0.0.1
med den senaste versionen av Databricks SDK för Java. Du hittar den senaste versionen på den centrala Maven-lagringsplatsen.Instruera projektet att ta det deklarerade beroendet av Databricks SDK för Java. I IntelliJ IDEA högerklickar du till exempel på projektets rotnod i projektets projektverktygsfönster och klickar sedan på Läs in projektet igen.
Lägg till kod för att importera Databricks SDK för Java och för att lista alla kluster på din Azure Databricks-arbetsyta. I ett projekts
Main.java
fil kan koden till exempel vara följande: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()); } } }
Kommentar
Genom att inte ange några argument i föregående anrop till
WorkspaceClient w = new WorkspaceClient()
använder Databricks SDK för Java sin standardprocess för att försöka utföra Azure Databricks-autentisering. Information om hur du åsidosätter det här standardbeteendet finns i följande autentiseringsavsnitt .Skapa ditt projekt. Om du till exempel vill göra detta i IntelliJ IDEA klickar du på Skapa > byggprojekt på huvudmenyn.
Kör huvudfilen. Om du till exempel vill göra detta i IntelliJ IDEA för ett projekts
Main.java
fil klickar du på Kör " > Main" på huvudmenyn.Listan över kluster visas. I IntelliJ IDEA finns det till exempel i fönstret Kör verktyg. Om du vill visa det här verktygsfönstret går du till huvudmenyn och klickar på Visa > verktyg Windows > Kör.
Autentisera Databricks SDK för Java med ditt Azure Databricks-konto eller din arbetsyta
Databricks SDK för Java implementerar Databricks-klientens enhetliga autentiseringsstandard, en konsoliderad och konsekvent arkitektur- och programmatisk metod för autentisering. Med den här metoden kan du konfigurera och automatisera autentisering med Azure Databricks mer centraliserad och förutsägbar. Det gör att du kan konfigurera Databricks-autentisering en gång och sedan använda den konfigurationen över flera Databricks-verktyg och SDK:er utan ytterligare autentiseringskonfigurationsändringar. Mer information, inklusive mer kompletta kodexempel i Java, finns i Databricks-klientens enhetliga autentisering.
Kommentar
Databricks SDK för Java har ännu inte implementerat Azure-hanterad identitetsautentisering.
Några av de tillgängliga kodningsmönstren för att initiera Databricks-autentisering med Databricks SDK för Java är:
Använd Databricks standardautentisering genom att göra något av följande:
- Skapa eller identifiera en anpassad Databricks-konfigurationsprofil med de obligatoriska fälten för databricks-målautentiseringstypen. Ange
DATABRICKS_CONFIG_PROFILE
sedan miljövariabeln till namnet på den anpassade konfigurationsprofilen. - Ange nödvändiga miljövariabler för databricks-målautentiseringstypen.
Instansiera till exempel ett
WorkspaceClient
objekt med Databricks standardautentisering på följande sätt:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Skapa eller identifiera en anpassad Databricks-konfigurationsprofil med de obligatoriska fälten för databricks-målautentiseringstypen. Ange
Hårdkodning av obligatoriska fält stöds men rekommenderas inte, eftersom det riskerar att exponera känslig information i koden, till exempel personliga åtkomsttoken för Azure Databricks. I följande exempel hårdkodas Värden för Azure Databricks och åtkomsttokenvärden för Databricks-tokenautentisering:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Se även Autentisering i Databricks SDK för Java README.
Använda Databricks Utilities och Java med Databricks SDK för Java
Databricks Utilities innehåller flera hjälpfunktioner som gör det enkelt att arbeta med objektlagring effektivt, kedja och parametrisera notebook-filer och arbeta med hemligheter. Databricks tillhandahåller ett Databricks Utilities for Scala-bibliotek , som du kan anropa med Java-kod, så att du kan komma åt Databricks Utilities programmatiskt.
Om du vill använda Java-kod för att anropa Databricks Utilities för Scala gör du följande:
I ditt Java-projekt deklarerar du ett beroende av Databricks SDK för Java, enligt beskrivningen i föregående avsnitt.
Deklarera ett beroende av Databricks Utilities för Scala-biblioteket. Det gör du genom att lägga till följande
<dependency>
ipom.xml
filens befintliga<dependencies>
avsnitt:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Kommentar
Ersätt
0.1.4
med den senaste versionen av Databricks Utilities för Scala-biblioteket. Du hittar den senaste versionen på den centrala Maven-lagringsplatsen.Instruera projektet att ta det deklarerade beroendet av Databricks Utilities för Scala. I IntelliJ IDEA går du till exempel till projektverktygets fönster, klickar på projektets rotnod och klickar sedan på Maven > Läs in projektet igen.
Lägg till kod för import och anropa sedan Databricks-verktyget för Scala. Följande kod automatiserar till exempel en Unity Catalog-volym. Det här exemplet skapar en fil med namnet
zzz_hello.txt
i volymens sökväg på arbetsytan, läser data från filen och tar sedan bort filen: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); } }
Skapa projektet och kör huvudfilen.
Kodexempel
Följande kodexempel visar hur du använder Databricks SDK för Java för att skapa och ta bort kluster, skapa jobb och lista grupper på kontonivå. Dessa kodexempel använder Databricks SDK för Javas standardprocess för Azure Databricks-autentisering.
Ytterligare kodexempel finns i exempelmappen i Databricks SDK för Java-lagringsplatsen i GitHub.
- Skapa ett kluster
- Ta bort ett kluster permanent
- Skapa ett jobb
- Hantera filer i Unity Catalog-volymer
- Visa en lista över grupper på kontonivå
Skapa ett kluster
Det här kodexemplet skapar ett kluster med den angivna Databricks Runtime-versionen och klusternodtypen. Det här klustret har en arbetare och klustret avslutas automatiskt efter 15 minuters inaktivitetstid.
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");
}
}
Skapa ett kluster som använder JDK 17
Kommentar
JDK 8 stöds fullt ut. JDK 17 finns i offentlig förhandsversion för Databricks Runtime version 13.1 och senare.
Det här avsnittet innehåller en guide för att skapa ett kluster med hjälp av Java Development Kit (JDK). Lär dig hur du skapar ett kluster med JDK 17 för att använda Java i dina notebook-filer och jobb.
När du skapar ett kluster anger du att klustret använder JDK 17 för både drivrutinen och kören genom att lägga till följande miljövariabel i Advanced Options > Spark > Environment Variables:
JNAME=zulu17-ca-amd64
Ta bort ett kluster permanent
Det här kodexemplet tar bort klustret permanent med det angivna kluster-ID:t från arbetsytan.
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);
}
}
Skapa ett jobb
Det här kodexemplet skapar ett Azure Databricks-jobb som kan användas för att köra den angivna notebook-filen i det angivna klustret. När den här koden körs hämtar den den befintliga notebook-filens sökväg, det befintliga kluster-ID:t och relaterade jobbinställningar från användaren i terminalen.
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()
);
}
}
Hantera filer i Unity Catalog-volymer
Det här kodexemplet visar olika anrop till files
funktioner i WorkspaceClient
för att få åtkomst till en Unity Catalog-volym.
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);
}
}
Visa en lista över grupper på kontonivå
I det här kodexemplet visas visningsnamnen för alla tillgängliga grupper i Azure Databricks-kontot.
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());
}
}
}
Använda Scala med Databricks SDK för Java
Du kan använda Scala-projekt med Databricks SDK för Java. Innan du börjar måste utvecklingsdatorn ha:
- Azure Databricks-autentisering har konfigurerats.
- En Scala-kompatibel integrerad utvecklingsmiljö (IDE) rekommenderas. Databricks rekommenderar IntelliJ IDEA med Scala-plugin-programmet. Dessa instruktioner har testats med IntelliJ IDEA Community Edition 2023.3.6. Om du använder en annan version eller utgåva av IntelliJ IDEA kan följande instruktioner variera.
- Ett Java Development Kit (JDK) som är kompatibelt med Java 8 eller senare. Om du vill köra dina program eller använda dina bibliotek i ett Azure Databricks-kluster rekommenderar Databricks att du använder en version av JDK som matchar JDK-versionen i klustret. Information om hur du hittar JDK-versionen som ingår i en specifik Databricks Runtime finns i Versionsanmärkningsversioner och kompatibilitet för Databricks Runtime. Om du använder IntelliJ IDEA kan du välja en befintlig lokal JDK-installation eller installera ett nytt JDK lokalt när Scala-projektet skapas.
- Ett Scala-byggverktyg. Databricks rekommenderar
sbt
. Om du använder IntelliJ IDEA kan du välja vilken version somsbt
ska användas när Scala-projektet skapas. - Scala. Om du vill köra dina program eller använda dina bibliotek i ett Azure Databricks-kluster rekommenderar Databricks att du använder en version av Scala som matchar Scala-versionen i klustret. Information om hur du hittar Scala-versionen som ingår i en specifik Databricks Runtime finns i Viktig information om versioner och kompatibilitet för Databricks Runtime. Om du använder IntelliJ IDEA kan du välja den Scala-version som ska användas när Scala-projektet skapas.
Så här konfigurerar, skapar och kör du Ditt Scala-projekt:
I projektets
build.sbt
fil tar du ett beroende av Databricks SDK för Java-biblioteket genom att lägga till följande rad i slutet av filen och sedan spara filen:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Kommentar
Ersätt
0.2.0
med den senaste versionen av Databricks SDK för Java-biblioteket. Du hittar den senaste versionen på den centrala Maven-lagringsplatsen.Instruera projektet att ta det deklarerade beroendet av Databricks SDK för Java. I IntelliJ IDEA klickar du till exempel på meddelandeikonen Läs in sbt-ändringar .
Lägg till kod för att importera Databricks SDK för Java och för att lista alla kluster på din Azure Databricks-arbetsyta. I ett projekts
Main.scala
fil kan koden till exempel vara följande: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) } } }
Kommentar
Genom att inte ange några argument i föregående anrop till
val w = new WorkspaceClient()
använder Databricks SDK för Java sin standardprocess för att försöka utföra Azure Databricks-autentisering. Information om hur du åsidosätter det här standardbeteendet finns i följande autentiseringsavsnitt .Skapa ditt projekt. Om du till exempel vill göra detta i IntelliJ IDEA klickar du på Skapa > byggprojekt på huvudmenyn.
Kör huvudfilen. Om du till exempel vill göra detta i IntelliJ IDEA för ett projekts
Main.scala
fil klickar du på Kör Kör > Main.scala på huvudmenyn.Listan över kluster visas. I IntelliJ IDEA finns det till exempel i fönstret Kör verktyg. Om du vill visa det här verktygsfönstret går du till huvudmenyn och klickar på Visa > verktyg Windows > Kör.
Använda Databricks Utilities och Scala med Databricks SDK för Java
Databricks Utilities innehåller flera hjälpfunktioner som gör det enkelt att arbeta med objektlagring effektivt, kedja och parametrisera notebook-filer och arbeta med hemligheter. Databricks tillhandahåller ett Databricks Utilities för Scala-bibliotek så att du kan komma åt Databricks Utilities via programmering med Scala.
Om du vill anropa Databricks Utilities för Scala gör du följande:
I Ditt Scala-projekt deklarerar du ett beroende av Databricks SDK för Java, enligt beskrivningen i föregående avsnitt.
Deklarera ett beroende av Databricks Utilities för Scala-biblioteket. I till exempel projektets
build.sbt
fil lägger du till följande rad i slutet av filen och sparar sedan filen:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Kommentar
Ersätt
0.1.4
med den senaste versionen av Databricks Utilities för Scala-biblioteket. Du hittar den senaste versionen på den centrala Maven-lagringsplatsen.Instruera projektet att ta det deklarerade beroendet av Databricks Utilities för Scala. I IntelliJ IDEA klickar du till exempel på meddelandeikonen Läs in sbt-ändringar .
Lägg till kod för import och anropa sedan Databricks-verktyget för Scala. Följande kod automatiserar till exempel en Unity Catalog-volym. Det här exemplet skapar en fil med namnet
zzz_hello.txt
i volymens sökväg på arbetsytan, läser data från filen och tar sedan bort filen: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) } }
Kommentar
Genom att inte ange några argument i föregående anrop till
val dbutils = DBUtils.getDBUtils()
använder Databricks Utilities for Scala sin standardprocess för att försöka utföra Azure Databricks-autentisering.Om du vill åsidosätta det här standardbeteendet skickar du ett instansierat
DatabricksCfg
objekt som ett argument tillgetDBUtils
. Mer information finns i föregående autentiseringsavsnitt .Observera dock att om koden körs i Databricks Runtime ignoreras det här
DatabricksCfg
objektet. Det beror på att Databricks Utilities for Scala delegerar till de inbyggda Databricks-verktygen när de körs i Databricks Runtime.Skapa projektet och kör huvudfilen.
Om du vill komma åt Unity Catalog-volymer använder du files
i WorkspaceClient
. Se Hantera filer i Unity Catalog-volymer. Du kan inte använda DBUtils.getDBUtils()
för att komma åt volymer.
Testning
Om du vill testa koden använder du Java-testramverk som JUnit. Om du vill testa koden under simulerade förhållanden utan att anropa Azure Databricks REST API-slutpunkter eller ändra tillståndet för dina Azure Databricks-konton eller arbetsytor använder du Java-modellbibliotek som Mockito.
Till exempel med följande fil med namnet Helpers.java
som innehåller en createCluster
funktion som returnerar information om det nya klustret:
// 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();
}
}
Och med följande fil med namnet Main.java
som anropar createCluster
funktionen:
// 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());
}
}
Följande fil med namnet HelpersTest.java
testar om createCluster
funktionen returnerar det förväntade svaret. I stället för att skapa ett kluster på målarbetsytan hånar det här testet ett WorkspaceClient
objekt, definierar inställningarna för det simulerade objektet och skickar sedan det simulerade objektet till createCluster
funktionen. Testet kontrollerar sedan om funktionen returnerar det nya simulerade klustrets förväntade ID.
// 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);
}
}
Ytterligare resurser
Mer information finns i:
- Databricks SDK för Java README
- Referens för Databricks SDK för Java API
- Ytterligare kodexempel
- Loggning
- Tidskrävande åtgärder
- Sidnumrerade svar