Databricks SDK for Java
Ebből a cikkből megtudhatja, hogyan automatizálhatja az Azure Databricks-fiókok, -munkaterületek és kapcsolódó erőforrások műveleteit a Java Databricks SDK-val. Ez a cikk kiegészíti a Java README-hez készült Databricks SDK-t, az API-referenciákat és példákat.
Feljegyzés
Ez a funkció bétaverzióban érhető el, és éles környezetben is használható.
A bétaidőszak alatt a Databricks azt javasolja, hogy rögzítse a Java Databricks SDK adott alverziójának függőségét, amelytől a kód függ. Rögzítheti például a függőségeket olyan fájlokban, mint pom.xml
a Maven. A függőségek rögzítésével kapcsolatos további információkért lásd : Bevezetés a függőségi mechanizmusba.
Mielőtt elkezdené
A Java Databricks SDK használatának megkezdése előtt a fejlesztőgépnek a következőkkel kell rendelkeznie:
- Azure Databricks-hitelesítés konfigurálva.
- Java Fejlesztői készlet (JDK), amely kompatibilis a Java 8 vagy újabb verzióval. A Java Databricks SDK-val való folyamatos integrációs (CI) tesztelés kompatibilis a Java 8., 11., 17. és 20. verziójával.
- Java-kompatibilis integrált fejlesztési környezet (IDE) használata ajánlott. A Databricks az IntelliJ IDEA-t javasolja.
A Java Databricks SDK használatának első lépései
A projekt fájljában
pom.xml
utasítsa a buildrendszert, hogy függjön a Java-hoz készült Databricks SDK-tól. Ehhez adja hozzá a következőt<dependency>
apom.xml
fájl meglévő<dependencies>
szakaszához. Ha a<dependencies>
szakasz még nem létezik apom.xml
fájlban, a szülőelemet is hozzá kell adnia<dependencies>
apom.xml
fájlhoz.Ha például meg szeretné nyitni a projekt fájlját
pom.xml
az IntelliJ IDEA-ban, kattintson a Windows > Project nézet > eszközre, majd kattintson duplán a projektnév> src > pom.xml megnyitásához.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>
Feljegyzés
Mindenképpen cserélje le
0.0.1
a Java Databricks SDK legújabb verziójára. A legújabb verziót a Maven központi adattárában találja.Utasítsa a projektet, hogy vegye figyelembe a Java Databricks SDK-ra vonatkozó deklarált függőséget. Az IntelliJ IDEA-ban például a projekt Projekt eszközablakában kattintson a jobb gombbal a projekt gyökércsomópontjára, majd kattintson a Project újratöltése parancsra.
Adjon hozzá kódot a Java Databricks SDK importálásához és az Azure Databricks-munkaterület összes fürtjének listázásához. Egy projekt fájljában
Main.java
például a kód a következő lehet: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()); } } }
Feljegyzés
Ha az előző hívásban
WorkspaceClient w = new WorkspaceClient()
nem állít be argumentumokat, a Java Databricks SDK az alapértelmezett folyamatot használja az Azure Databricks-hitelesítés végrehajtásához. Az alapértelmezett viselkedés felülbírálásához tekintse meg a következő hitelesítési szakaszt.Hozza létre a projektet. Ehhez például az IntelliJ IDEA-ban a főmenüben kattintson a Build Project gombra>.
Futtassa a fő fájlt. Ha például egy projekt fájljához
Main.java
az IntelliJ IDEA-ban szeretné ezt megtenni, kattintson a főmenüBen a Futtatás főmenüre>.Megjelenik a fürtök listája. Az IntelliJ IDEA-ban például ez a Futtatás eszközablakban található. Az eszközablak megjelenítéséhez a főmenüben kattintson a Windows-futtatás >eszköz megtekintése parancsra>.
A Java Databricks SDK hitelesítése az Azure Databricks-fiókkal vagy -munkaterülettel
A Java Databricks SDK a Databricks-ügyfél egységes hitelesítési szabványát implementálja, amely a hitelesítés egységes és egységes architekturális és programozott megközelítése. Ez a megközelítés segít központosítottabbá és kiszámíthatóbbá tenni az Azure Databricks-hitelesítés beállítását és automatizálását. Lehetővé teszi a Databricks-hitelesítés egyszeri konfigurálását, majd ezt a konfigurációt több Databricks-eszközön és SDK-ban is használhatja további hitelesítési konfigurációmódosítások nélkül. További információkért, beleértve a Java teljesebb kód példáit, tekintse meg a Databricks-ügyfél egységesített hitelesítését.
Feljegyzés
A Java Databricks SDK még nem implementálta az Azure által felügyelt identitások hitelesítését.
A Databricks-hitelesítésnek a Java Databricks SDK-val való inicializálásához rendelkezésre álló kódolási minták közé tartoznak a következők:
Használja a Databricks alapértelmezett hitelesítését az alábbiak egyikével:
- Egyéni Databricks-konfigurációs profil létrehozása vagy azonosítása a cél Databricks-hitelesítési típushoz szükséges mezőkkel. Ezután állítsa a
DATABRICKS_CONFIG_PROFILE
környezeti változót az egyéni konfigurációs profil nevére. - Adja meg a cél Databricks-hitelesítési típushoz szükséges környezeti változókat.
Ezután példányosíthat például egy
WorkspaceClient
objektumot a Databricks alapértelmezett hitelesítésével az alábbiak szerint:import com.databricks.sdk.WorkspaceClient; // ... WorkspaceClient w = new WorkspaceClient(); // ...
- Egyéni Databricks-konfigurációs profil létrehozása vagy azonosítása a cél Databricks-hitelesítési típushoz szükséges mezőkkel. Ezután állítsa a
A szükséges mezők szigorú kódolása támogatott, de nem ajánlott, mivel a kód bizalmas adatainak, például az Azure Databricks személyes hozzáférési jogkivonatainak felfedését kockáztatja. Az alábbi, a Databricks-jogkivonat-hitelesítéshez használt Azure Databricks-gazda- és hozzáférési jogkivonat-értékek a következő példa:
import com.databricks.sdk.WorkspaceClient; import com.databricks.sdk.core.DatabricksConfig; // ... DatabricksConfig cfg = new DatabricksConfig() .setHost("https://...") .setToken("..."); WorkspaceClient w = new WorkspaceClient(cfg); // ...
Lásd még : Hitelesítés a Java README-hez készült Databricks SDK-ban.
A Databricks Utilities és a Java használata a Java Databricks SDK-val
A Databricks Utilities számos segédfüggvényt biztosít, amelyek megkönnyítik az objektumtárolás hatékony használatát, a jegyzetfüzetek láncolását és paraméterezését, valamint a titkos kulcsok használatát. A Databricks egy Databricks-segédprogramokat biztosít a Scala-kódtárhoz , amelyet Java-kóddal hívhat meg, hogy programozott módon hozzáférhessen a Databricks Utilities-hez.
Ha Java-kóddal szeretné meghívni a Databricks Utilities for Scala-t, tegye a következőket:
A Java-projektben deklaráljon függőséget a Java Databricks SDK-ról az előző szakaszban leírtak szerint.
Deklaráljon függőséget a Databricks Utilities for Scala könyvtárban. Ehhez adja hozzá a következőt
<dependency>
apom.xml
fájl meglévő<dependencies>
szakaszához:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>
Feljegyzés
Mindenképpen cserélje le
0.1.4
a Scala-kódtárHoz készült Databricks Utilities legújabb verzióját. A legújabb verziót a Maven központi adattárában találja.Utasítsa a projektet, hogy vegye át a Deklarált függőséget a Scala Databricks segédprogramjaitól. Az IntelliJ IDEA-ban például a projekt Projekt eszközablakában kattintson a projekt gyökércsomópontjára, majd a Maven > Reload Project elemre.
Adjon hozzá kódot az importáláshoz, majd hívja meg a Scala Databricks segédprogramját. Az alábbi kód például automatizál egy Unity Catalog-kötetet. Ez a példa létrehoz egy fájlt
zzz_hello.txt
a kötet munkaterületen belüli elérési útján, beolvassa az adatokat a fájlból, majd törli a fájlt: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); } }
Készítse el a projektet, és futtassa a fő fájlt.
Kódpéldák
Az alábbi példakód bemutatja, hogyan használhatja a Java Databricks SDK-t fürtök létrehozására és törlésére, feladatok létrehozására és fiókszintű csoportok listázására. Ezek a példakódok a Databricks SDK-t használják a Java alapértelmezett Azure Databricks-hitelesítési folyamatához.
További kódpéldákat a GitHub Databricks SDK for Java-adattárában talál.
- Fürt létrehozása
- Fürt végleges törlése
- Feladat létrehozása
- Fájlok kezelése Unity Catalog-kötetekben
- Fiókszintű csoportok listázása
Fürt létrehozása
Ez a példakód létrehoz egy fürtöt a megadott Databricks Runtime-verzióval és fürtcsomóponttípussal. Ez a fürt egy feldolgozóval rendelkezik, és a fürt 15 perc tétlenség után automatikusan leáll.
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");
}
}
JDK 17-et használó fürt létrehozása
Feljegyzés
A JDK 8 teljes mértékben támogatott. A JDK 17 nyilvános előzetes verzióban érhető el a Databricks Runtime 13.1-s és újabb verzióihoz.
Ez a szakasz útmutatást nyújt a fürtök Java Development Kit (JDK) használatával történő létrehozásához. Megtudhatja, hogyan hozhat létre fürtöt JDK 17-zel a Java jegyzetfüzetekben és feladatokban való használatához.
Fürt létrehozásakor adja meg, hogy a fürt JDK 17-et használjon az illesztőprogramhoz és a végrehajtóhoz is, ha hozzáadja a következő környezeti változót az Advanced Options Spark környezeti változóihoz:> >
JNAME=zulu17-ca-amd64
Fürt végleges törlése
Ez a példakód véglegesen törli a megadott fürtazonosítóval rendelkező fürtöt a munkaterületről.
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);
}
}
Feladat létrehozása
Ez a példakód létrehoz egy Azure Databricks-feladatot, amely a megadott jegyzetfüzet futtatására használható a megadott fürtön. A kód futtatásakor lekéri a meglévő jegyzetfüzet elérési útját, a meglévő fürtazonosítót és a kapcsolódó feladatbeállításokat a terminál felhasználójától.
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()
);
}
}
Fájlok kezelése Unity Catalog-kötetekben
Ez a példakód bemutatja a files
Unity-katalógus köteteihez való hozzáféréshez szükséges funkciók WorkspaceClient
különböző hívásait.
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);
}
}
Fiókszintű csoportok listázása
Ez a példakód felsorolja az Azure Databricks-fiókban elérhető összes csoport megjelenítendő nevét.
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());
}
}
}
A Scala használata a Java Databricks SDK-val
Scala-projekteket használhat a Java Databricks SDK-val. A kezdés előtt a fejlesztőgépnek a következőket kell tartalmaznia:
- Azure Databricks-hitelesítés konfigurálva.
- Scala-kompatibilis integrált fejlesztési környezet (IDE) használata ajánlott. A Databricks az IntelliJ IDEA-t javasolja a Scala beépülő modullal. Ezeket az utasításokat az IntelliJ IDEA Community Edition 2023.3.6-os verziójával teszteltük. Ha az IntelliJ IDEA másik verzióját vagy kiadását használja, az alábbi utasítások eltérhetnek.
- Java Development Kit (JDK), amely kompatibilis a Java 8 vagy újabb verzióval. Ha futtatni szeretné az alkalmazásait, vagy egy Azure Databricks-fürtön szeretné használni a kódtárakat, a Databricks azt javasolja, hogy a JDK egy olyan verzióját használja, amely megfelel a fürt JDK-verziójának. Az adott Databricks Runtime-hoz tartozó JDK-verzió megkereséséhez tekintse meg a Databricks Runtime kibocsátási megjegyzéseinek verzióit és kompatibilitását. Ha IntelliJ IDEA-t használ, választhat egy meglévő helyi JDK-telepítést, vagy telepítheti helyileg az új JDK-t a Scala-projekt létrehozása során.
- Scala buildelési eszköz. A Databricks javasolja
sbt
. Ha IntelliJ IDEA-t használ, kiválaszthatja asbt
Scala-projekt létrehozása során használni kívánt verziót. - Scala. Ha futtatni szeretné az alkalmazásait, vagy egy Azure Databricks-fürtön szeretné használni a kódtárakat, a Databricks azt javasolja, hogy a Scala egy olyan verzióját használja, amely megfelel a fürt Scala-verziójának. Az adott Databricks Runtime-hoz tartozó Scala-verzió megkereséséhez tekintse meg a Databricks Runtime kibocsátási megjegyzéseinek verzióit és kompatibilitását. Ha IntelliJ IDEA-t használ, kiválaszthatja a Scala-projekt létrehozása során használni kívánt Scala-verziót.
A Scala-projekt konfigurálása, létrehozása és futtatása:
A projekt fájljában
build.sbt
függjön a Databricks SDK for Java-kódtártól a következő sor hozzáadásával a fájl végéhez, majd mentse a fájlt:libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"
Feljegyzés
Mindenképpen cserélje le
0.2.0
a Java-hoz készült Databricks SDK legújabb verzióját. A legújabb verziót a Maven központi adattárában találja.Utasítsa a projektet, hogy vegye figyelembe a Java Databricks SDK-ra vonatkozó deklarált függőséget. Az IntelliJ IDEA-ban például kattintson a Load sbt changes notification ikonra.
Adjon hozzá kódot a Java Databricks SDK importálásához és az Azure Databricks-munkaterület összes fürtjének listázásához. Egy projekt fájljában
Main.scala
például a kód a következő lehet: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) } } }
Feljegyzés
Ha az előző hívásban
val w = new WorkspaceClient()
nem állít be argumentumokat, a Java Databricks SDK az alapértelmezett folyamatot használja az Azure Databricks-hitelesítés végrehajtásához. Az alapértelmezett viselkedés felülbírálásához tekintse meg a következő hitelesítési szakaszt.Hozza létre a projektet. Ehhez például az IntelliJ IDEA-ban a főmenüben kattintson a Build Project gombra>.
Futtassa a fő fájlt. Ehhez például az IntelliJ IDEA-ban egy projekt fájljához
Main.scala
kattintson a főmenüBen a Run Run 'Main.scala' (Fő.scala) parancsra>.Megjelenik a fürtök listája. Az IntelliJ IDEA-ban például ez a Futtatás eszközablakban található. Az eszközablak megjelenítéséhez a főmenüben kattintson a Windows-futtatás >eszköz megtekintése parancsra>.
A Databricks Utilities és a Scala használata a Java Databricks SDK-val
A Databricks Utilities számos segédfüggvényt biztosít, amelyek megkönnyítik az objektumtárolás hatékony használatát, a jegyzetfüzetek láncolását és paraméterezését, valamint a titkos kulcsok használatát. A Databricks databricks segédprogramokat biztosít a Scala-kódtárhoz , amellyel programozott módon érheti el a Databricks segédprogramokat a Scalával.
A Databricks Utilities for Scala meghívásához tegye a következőket:
A Scala-projektben deklaráljon függőséget a Java Databricks SDK-ról az előző szakaszban leírtak szerint.
Deklaráljon függőséget a Databricks Utilities for Scala könyvtárban. A projekt fájljában
build.sbt
például adja hozzá a következő sort a fájl végéhez, majd mentse a fájlt:libraryDependencies += "com.databricks" % "databricks-dbutils-scala_2.12" % "0.1.4"
Feljegyzés
Mindenképpen cserélje le
0.1.4
a Scala-kódtárHoz készült Databricks Utilities legújabb verzióját. A legújabb verziót a Maven központi adattárában találja.Utasítsa a projektet, hogy vegye át a Deklarált függőséget a Scala Databricks segédprogramjaitól. Az IntelliJ IDEA-ban például kattintson a Load sbt changes notification ikonra.
Adjon hozzá kódot az importáláshoz, majd hívja meg a Scala Databricks segédprogramját. Az alábbi kód például automatizál egy Unity Catalog-kötetet. Ez a példa létrehoz egy fájlt
zzz_hello.txt
a kötet munkaterületen belüli elérési útján, beolvassa az adatokat a fájlból, majd törli a fájlt: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) } }
Feljegyzés
Ha nem állít be argumentumokat az előző hívásban
val dbutils = DBUtils.getDBUtils()
, a Databricks Utilities for Scala az alapértelmezett folyamatot használja az Azure Databricks-hitelesítés végrehajtására.Az alapértelmezett viselkedés felülbírálásához adjon át egy példányosított
DatabricksCfg
objektumot argumentumként a következőnekgetDBUtils
: További információkért lásd az előző hitelesítési szakaszt.Vegye figyelembe azonban, hogy ha a kód a Databricks Runtime-ben fut, a rendszer figyelmen kívül hagyja ezt az
DatabricksCfg
objektumot. Ennek az az oka, hogy a Databricks Utilities for Scala delegálja a beépített Databricks Utilities-t, amikor a Databricks-futtatókörnyezeten belül fut.Készítse el a projektet, és futtassa a fő fájlt.
A Unity Catalog-kötetek eléréséhez használja files
a következőn belülWorkspaceClient
: . Lásd: Fájlok kezelése a Unity-katalógus köteteiben. Kötetek nem érhetők DBUtils.getDBUtils()
el.
Tesztelés
A kód teszteléséhez használjon Java-tesztelési keretrendszereket, például JUnitot. Ha szimulált körülmények között szeretné tesztelni a kódot az Azure Databricks REST API-végpontok meghívása vagy az Azure Databricks-fiókok vagy -munkaterületek állapotának módosítása nélkül, használjon Java-alapú szimulált kódtárakat, például a Mockito-t.
Ha például a következő fájl neve Helpers.java
egy függvényt createCluster
tartalmaz, amely adatokat ad vissza az új fürtről:
// 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();
}
}
És a függvényt meghívó createCluster
következő fájlra hivatkozvaMain.java
:
// 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());
}
}
A következő elnevezett HelpersTest.java
fájl ellenőrzi, hogy a createCluster
függvény a várt választ adja-e vissza. Ahelyett, hogy fürtöt hoz létre a cél-munkaterületen, ez a teszt egy WorkspaceClient
objektumot szimulál, definiálja a kicsúsztatott objektum beállításait, majd átadja a kicsúsztatott objektumot a createCluster
függvénynek. A teszt ezután ellenőrzi, hogy a függvény visszaadja-e az új szimulált fürt várt azonosítóját.
// 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);
}
}
További erőforrások
További információk:
- Databricks SDK for Java README
- Databricks SDK for Java API-referencia
- További példakódok
- Logging
- Hosszú ideig futó műveletek
- Lapszámozott válaszok