Databricks SDK voor Java
In dit artikel leert u hoe u bewerkingen in Azure Databricks-accounts, werkruimten en gerelateerde resources automatiseert met de Databricks SDK voor Java. Dit artikel is een aanvulling op de Databricks SDK voor Java README, API-verwijzing en voorbeelden.
Notitie
Deze functie is in bèta en is in orde om te gebruiken in productie.
Tijdens de bètaperiode raadt Databricks u aan een afhankelijkheid vast te maken van de specifieke secundaire versie van de Databricks SDK voor Java waarvan uw code afhankelijk is. U kunt bijvoorbeeld afhankelijkheden vastmaken in bestanden zoals pom.xml
voor Maven. Zie Inleiding tot het afhankelijkheidsmechanisme voor meer informatie over het vastmaken van afhankelijkheden.
Voordat u begint
Voordat u begint met het gebruik van de Databricks SDK voor Java, moet uw ontwikkelcomputer over het volgende beschikken:
- Azure Databricks-verificatie geconfigureerd.
- Een Java Development Kit (JDK) die compatibel is met Java 8 of hoger. Ci-tests (continue integratie) met de Databricks SDK voor Java zijn compatibel met Java-versies 8, 11, 17 en 20.
- Een IDE (Integrated Development Environment) die compatibel is met Java, wordt aanbevolen. Databricks raadt IntelliJ IDEA aan.
Aan de slag met de Databricks SDK voor Java
Geef in het bestand van
pom.xml
uw project aan dat uw buildsysteem afhankelijk is van de Databricks SDK voor Java. Voeg hiervoor het volgende<dependency>
toe aan de bestaande<dependencies>
sectie van hetpom.xml
bestand. Als de<dependencies>
sectie nog niet bestaat in hetpom.xml
bestand, moet u ook het<dependencies>
bovenliggende element toevoegen aan hetpom.xml
bestand.Als u bijvoorbeeld het bestand van
pom.xml
uw project wilt openen in IntelliJ IDEA, klikt u op Het windows-project >weergeven > en dubbelklikt u vervolgens om de src-naam> >van uw project te openen pom.xml.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Notitie
Zorg ervoor dat u vervangt door
0.0.1
de nieuwste versie van de Databricks SDK voor Java. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks SDK voor Java. Klik bijvoorbeeld in IntelliJ IDEA in het projecthulpprogrammavenster met de rechtermuisknop op het hoofdknooppunt van uw project en klik vervolgens op Project opnieuw laden.
Voeg code toe om de Databricks SDK voor Java te importeren en om alle clusters in uw Azure Databricks-werkruimte weer te geven. In het bestand van
Main.java
een project kan de code bijvoorbeeld als volgt zijn: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()); } } }
Notitie
Door geen argumenten in de voorgaande aanroep in te
WorkspaceClient w = new WorkspaceClient()
stellen, gebruikt de Databricks SDK voor Java het standaardproces voor het uitvoeren van Azure Databricks-verificatie. Als u dit standaardgedrag wilt overschrijven, raadpleegt u de volgende verificatiesectie .Bouw uw project. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA, klikt u in het hoofdmenu op Build Build > Project.
Voer het hoofdbestand uit. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA voor het bestand van
Main.java
een project, klikt u in het hoofdmenu op Uitvoeren > 'Hoofd'.De lijst met clusters wordt weergegeven. In IntelliJ IDEA bevindt dit zich bijvoorbeeld in het venster Hulpprogramma uitvoeren . Als u dit taakvenster wilt weergeven, klikt u in het hoofdmenu op Weergaveprogramma > uitvoeren>.
De Databricks SDK voor Java verifiëren met uw Azure Databricks-account of -werkruimte
De Databricks SDK voor Java implementeert de geïntegreerde verificatiestandaard van de Databricks-client, een geconsolideerde en consistente architectuur en programmatische benadering voor verificatie. Deze aanpak helpt bij het instellen en automatiseren van verificatie met Azure Databricks gecentraliseerder en voorspelbaarder. Hiermee kunt u Databricks-verificatie eenmaal configureren en deze configuratie vervolgens gebruiken voor meerdere Databricks-hulpprogramma's en SDK's zonder verdere verificatieconfiguratiewijzigingen. Zie voor meer informatie, waaronder meer volledige codevoorbeelden in Java, geïntegreerde verificatie voor Databricks-clients.
Notitie
De Databricks SDK voor Java heeft nog geen verificatie van door Azure beheerde identiteiten geïmplementeerd.
Enkele van de beschikbare coderingspatronen voor het initialiseren van Databricks-verificatie met de Databricks SDK voor Java zijn:
Gebruik databricks-standaardverificatie door een van de volgende handelingen uit te voeren:
- Maak of identificeer een aangepast Databricks-configuratieprofiel met de vereiste velden voor het doelverificatietype Databricks. Stel vervolgens de
DATABRICKS_CONFIG_PROFILE
omgevingsvariabele in op de naam van het aangepaste configuratieprofiel. - Stel de vereiste omgevingsvariabelen in voor het doelverificatietype Databricks.
Maak vervolgens als volgt een instantie van een
WorkspaceClient
object met databricks-standaardverificatie:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Maak of identificeer een aangepast Databricks-configuratieprofiel met de vereiste velden voor het doelverificatietype Databricks. Stel vervolgens de
Het hard coderen van de vereiste velden wordt ondersteund, maar wordt niet aanbevolen, omdat het risico loopt dat gevoelige informatie in uw code wordt weergegeven, zoals persoonlijke toegangstokens van Azure Databricks. In het volgende voorbeeld worden azure Databricks-host- en toegangstokenwaarden vastgelegd voor databricks-tokenverificatie:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Zie ook Verificatie in de Databricks SDK voor Java README.
Databricks Utilities en Java gebruiken met de Databricks SDK voor Java
Databricks Utilities biedt verschillende helperfuncties waarmee u eenvoudig kunt werken met objectopslag, notebooks kunt koppelen en parameteriseren en werken met geheimen. Databricks biedt een Databricks Utilities voor Scala-bibliotheek , die u kunt aanroepen met Java-code, zodat u programmatisch toegang kunt krijgen tot Databricks Utilities.
Ga als volgt te werk om Java-code te gebruiken om de Databricks Utilities voor Scala aan te roepen:
Declareer in uw Java-project een afhankelijkheid van de Databricks SDK voor Java, zoals beschreven in de vorige sectie.
Declareer een afhankelijkheid van de Databricks Utilities voor Scala-bibliotheek. Voeg hiervoor het volgende
<dependency>
toe aan de bestaande<dependencies>
sectie van hetpom.xml
bestand:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Notitie
Zorg ervoor dat u vervangt door
0.1.4
de nieuwste versie van de Databricks Utilities for Scala-bibliotheek. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks Utilities voor Scala. Klik bijvoorbeeld in IntelliJ IDEA in het projecthulpprogrammavenster op het hoofdknooppunt van uw project en klik vervolgens op Maven > Project opnieuw laden.
Voeg code toe om te importeren en roep vervolgens het Databricks Utility voor Scala aan. Met de volgende code wordt bijvoorbeeld een Unity Catalog-volume geautomatiseerd. In dit voorbeeld wordt een bestand gemaakt met de naam
zzz_hello.txt
in het pad van het volume in de werkruimte, worden de gegevens uit het bestand gelezen en vervolgens het bestand verwijderd: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); } }
Bouw uw project en voer het hoofdbestand uit.
Codevoorbeelden
In de volgende codevoorbeelden ziet u hoe u de Databricks SDK voor Java gebruikt om clusters te maken en te verwijderen, taken te maken en groepen op accountniveau weer te geven. In deze codevoorbeelden wordt gebruikgemaakt van de Databricks SDK voor het standaard azure Databricks-verificatieproces van Java.
Zie de map voorbeelden in de Databricks SDK voor Java-opslagplaats in GitHub voor aanvullende codevoorbeelden.
- Een cluster maken
- Een cluster definitief verwijderen
- Een taak maken
- Bestanden beheren in Unity Catalog-volumes
- Groepen op accountniveau weergeven
Een cluster maken
In dit codevoorbeeld wordt een cluster gemaakt met de opgegeven Databricks Runtime-versie en het type clusterknooppunt. Dit cluster heeft één werkrol en het cluster wordt na 15 minuten niet-actieve tijd automatisch beëindigd.
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");
}
}
Een cluster maken dat gebruikmaakt van JDK 17
Notitie
JDK 8 wordt volledig ondersteund. JDK 17 bevindt zich in openbare preview voor Databricks Runtime-versies 13.1 en hoger.
Deze sectie bevat een handleiding voor het maken van een cluster met behulp van de Java Development Kit (JDK). Meer informatie over het maken van een cluster met JDK 17 voor het gebruik van Java in uw notebooks en taken.
Wanneer u een cluster maakt, geeft u op dat het cluster JDK 17 gebruikt voor zowel het stuurprogramma als het uitvoerprogramma door de volgende omgevingsvariabele toe te voegen aan Advanced Options > Spark-omgevingsvariabelen>:
JNAME=zulu17-ca-amd64
Een cluster definitief verwijderen
In dit codevoorbeeld wordt het cluster definitief verwijderd met de opgegeven cluster-id uit de werkruimte.
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);
}
}
Een taak maken
In dit codevoorbeeld wordt een Azure Databricks-taak gemaakt die kan worden gebruikt om het opgegeven notebook op het opgegeven cluster uit te voeren. Terwijl deze code wordt uitgevoerd, worden het pad van het bestaande notebook, de bestaande cluster-id en de gerelateerde taakinstellingen van de gebruiker in de terminal opgehaald.
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()
);
}
}
Bestanden beheren in Unity Catalog-volumes
In dit codevoorbeeld ziet u verschillende aanroepen naar files
functionaliteit binnen WorkspaceClient
om toegang te krijgen tot een Unity Catalog-volume.
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);
}
}
Groepen op accountniveau weergeven
In dit codevoorbeeld worden de weergavenamen voor alle beschikbare groepen in het Azure Databricks-account weergegeven.
import com.databricks.sdk.AccountClient;
import com.databricks.sdk.core.DatabricksConfig;
import com.databricks.sdk.service.iam.Group;
import com.databricks.sdk.service.iam.ListAccountGroupsRequest;
public class Main {
public static void main(String[] args) {
AccountClient a = new AccountClient();
for (Group g : a.groups().list((new ListAccountGroupsRequest()))) {
System.out.println(g.getDisplayName());
}
}
}
Scala gebruiken met de Databricks SDK voor Java
U kunt Scala-projecten gebruiken met de Databricks SDK voor Java. Voordat u begint, moet uw ontwikkelcomputer het volgende hebben:
- Azure Databricks-verificatie geconfigureerd.
- Een scala-compatibele IDE (Integrated Development Environment) wordt aanbevolen. Databricks raadt IntelliJ IDEA aan met de Scala-invoegtoepassing. Deze instructies zijn getest met IntelliJ IDEA Community Edition 2023.3.6. Als u een andere versie of editie van IntelliJ IDEA gebruikt, kunnen de volgende instructies variëren.
- Een Java Development Kit (JDK) die compatibel is met Java 8 of hoger. Als u uw toepassingen wilt uitvoeren of uw bibliotheken wilt gebruiken in een Azure Databricks-cluster, raadt Databricks u aan een versie van JDK te gebruiken die overeenkomt met de JDK-versie in het cluster. Als u de JDK-versie wilt vinden die is opgenomen in een specifieke Databricks Runtime, raadpleegt u de releaseversies en compatibiliteit van Databricks Runtime. Als u IntelliJ IDEA gebruikt, kunt u een bestaande lokale JDK-installatie kiezen of een nieuwe JDK lokaal installeren tijdens het maken van een Scala-project.
- Een Scala-buildhulpprogramma. Databricks raadt aan
sbt
. Als u IntelliJ IDEA gebruikt, kunt u de versie kiezen die u wilt gebruiken tijdens hetsbt
maken van een Scala-project. - Scala. Als u uw toepassingen wilt uitvoeren of uw bibliotheken wilt gebruiken in een Azure Databricks-cluster, raadt Databricks u aan een versie van Scala te gebruiken die overeenkomt met de Scala-versie in het cluster. Als u de Scala-versie wilt vinden die is opgenomen in een specifieke Databricks Runtime, raadpleegt u de releaseversies en compatibiliteit van Databricks Runtime. Als u IntelliJ IDEA gebruikt, kunt u de Scala-versie kiezen die u wilt gebruiken tijdens het maken van een Scala-project.
Uw Scala-project configureren, bouwen en uitvoeren:
Neem in het
build.sbt
projectbestand een afhankelijkheid van de Databricks SDK voor Java-bibliotheek door de volgende regel toe te voegen aan het einde van het bestand en sla het bestand vervolgens op:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Notitie
Zorg ervoor dat u vervangt door
0.2.0
de nieuwste versie van de Databricks SDK voor Java-bibliotheek. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks SDK voor Java. Klik bijvoorbeeld in IntelliJ IDEA op het meldingspictogram Voor laden sbt-wijzigingen .
Voeg code toe om de Databricks SDK voor Java te importeren en om alle clusters in uw Azure Databricks-werkruimte weer te geven. In het bestand van
Main.scala
een project kan de code bijvoorbeeld als volgt zijn: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) } } }
Notitie
Door geen argumenten in de voorgaande aanroep in te
val w = new WorkspaceClient()
stellen, gebruikt de Databricks SDK voor Java het standaardproces voor het uitvoeren van Azure Databricks-verificatie. Als u dit standaardgedrag wilt overschrijven, raadpleegt u de volgende verificatiesectie .Bouw uw project. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA, klikt u in het hoofdmenu op Build Build > Project.
Voer het hoofdbestand uit. Als u dit bijvoorbeeld wilt doen in IntelliJ IDEA voor het bestand van
Main.scala
een project, klikt u in het hoofdmenu op Uitvoeren > 'Main.scala'.De lijst met clusters wordt weergegeven. In IntelliJ IDEA bevindt dit zich bijvoorbeeld in het venster Hulpprogramma uitvoeren . Als u dit taakvenster wilt weergeven, klikt u in het hoofdmenu op Weergaveprogramma > uitvoeren>.
Databricks Utilities en Scala gebruiken met de Databricks SDK voor Java
Databricks Utilities biedt verschillende helperfuncties waarmee u eenvoudig kunt werken met objectopslag, notebooks kunt koppelen en parameteriseren en werken met geheimen. Databricks biedt een Databricks Utilities voor Scala-bibliotheek waarmee u programmatisch toegang kunt krijgen tot Databricks Utilities met Scala.
Ga als volgt te werk om de Databricks Utilities voor Scala aan te roepen:
Declareer in uw Scala-project een afhankelijkheid van de Databricks SDK voor Java, zoals beschreven in de vorige sectie.
Declareer een afhankelijkheid van de Databricks Utilities voor Scala-bibliotheek. Voeg bijvoorbeeld in het projectbestand
build.sbt
de volgende regel toe aan het einde van het bestand en sla het bestand op:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Notitie
Zorg ervoor dat u vervangt door
0.1.4
de nieuwste versie van de Databricks Utilities for Scala-bibliotheek. U vindt de nieuwste versie in de centrale Opslagplaats van Maven.Instrueer uw project om de gedeclareerde afhankelijkheid te nemen van de Databricks Utilities voor Scala. Klik bijvoorbeeld in IntelliJ IDEA op het meldingspictogram Voor laden sbt-wijzigingen .
Voeg code toe om te importeren en roep vervolgens het Databricks Utility voor Scala aan. Met de volgende code wordt bijvoorbeeld een Unity Catalog-volume geautomatiseerd. In dit voorbeeld wordt een bestand gemaakt met de naam
zzz_hello.txt
in het pad van het volume in de werkruimte, worden de gegevens uit het bestand gelezen en vervolgens het bestand verwijderd: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) } }
Notitie
Door geen argumenten in de voorgaande aanroep in te
val dbutils = DBUtils.getDBUtils()
stellen, gebruikt Databricks Utilities voor Scala het standaardproces voor het uitvoeren van Azure Databricks-verificatie.Als u dit standaardgedrag wilt overschrijven, geeft u een geïnstantieerd
DatabricksCfg
object door als argument aangetDBUtils
. Zie de voorgaande verificatiesectie voor meer informatie.Houd er echter rekening mee dat als uw code wordt uitgevoerd in de Databricks Runtime, dit
DatabricksCfg
object wordt genegeerd. Dit komt doordat de Databricks-hulpprogramma's voor Scala worden gedelegeerd aan de ingebouwde Databricks-hulpprogramma's bij het uitvoeren binnen de Databricks Runtime.Bouw uw project en voer het hoofdbestand uit.
Als u toegang wilt krijgen tot Unity Catalog-volumes, gebruikt u files
binnen WorkspaceClient
. Zie Bestanden beheren in Unity Catalog-volumes. U kunt geen toegang krijgen DBUtils.getDBUtils()
tot volumes.
Testen
Als u uw code wilt testen, gebruikt u Java-testframeworks zoals JUnit. Als u uw code wilt testen onder gesimuleerde omstandigheden zonder Azure Databricks REST API-eindpunten aan te roepen of de status van uw Azure Databricks-accounts of -werkruimten te wijzigen, gebruikt u Java-mockingbibliotheken zoals Mockito.
Bijvoorbeeld, op basis van het volgende bestand met de naam Helpers.java
van een createCluster
functie die informatie retourneert over het nieuwe 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();
}
}
En op basis van het volgende bestand met de naam Main.java
waarmee de createCluster
functie wordt aangeroepen:
// 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());
}
}
Het volgende bestand met de naam HelpersTest.java
test of de createCluster
functie het verwachte antwoord retourneert. In plaats van een cluster te maken in de doelwerkruimte, wordt met deze test een WorkspaceClient
object gesimuleerd, worden de instellingen van het gesimuleerde object gedefinieerd en wordt het gesimuleerde object vervolgens doorgegeven aan de createCluster
functie. De test controleert vervolgens of de functie de verwachte id van het nieuwe gesimuleerde cluster retourneert.
// 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);
}
}
Aanvullende bronnen
Zie voor meer informatie:
- Databricks SDK voor Java README
- Naslaginformatie over Databricks SDK voor Java-API
- Aanvullende codevoorbeelden
- Logboekregistratie
- Langlopende bewerkingen
- Gepagineerde antwoorden