Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megjegyzés
A Databricks a Databricks Eszközcsomagokat javasolja a feladatok és más Databricks-erőforrások forráskódként való létrehozásához, fejlesztéséhez, üzembe helyezéséhez és teszteléséhez. Lásd Mik azok a Databricks-eszközcsomagok?.
Ebből a cikkből megtudhatja, hogyan automatizálhatja az Azure Databricks-műveleteket, és hogyan gyorsíthatja fel a fejlesztést a Databricks SDK for Java. Ez a cikk kiegészíti a Java README-hez készült Databricks SDK-t, az API-referenciákat és példákat.
Megjegyzés
Ez a funkció Beta verzió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. Például rögzítheti a függőségeket olyan fájlokban, mint a Maven által használt pom.xml. 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:
- A(z) Azure Databricks-hitelesítés be lett konfigurálva.
- Java Development Kit (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
pom.xmlfájljában utasítsa a buildrendszert, hogy hozzon létre függőséget a Java-hoz készült Databricks SDK-val. Ehhez adja hozzá a következőt<dependency>apom.xmlfájl meglévő<dependencies>szakaszához. Ha a<dependencies>szakasz még nem létezik apom.xmlfájlban, a szülőelemet is hozzá kell adnia<dependencies>apom.xmlfájlhoz.Ha például meg szeretné nyitni a projekt
pom.xmlfájlját az IntelliJ IDEA-ban, kattintson a Nézet > Eszközablakok > Projekt menüpontra, majd duplán kattintson a projektneve> src > pom.xml megnyitásához.<dependencies> <dependency> <groupId>com.databricks</groupId> <artifactId>databricks-sdk-java</artifactId> <version>0.0.1</version> </dependency> </dependencies>Megjegyzés
Mindenképpen cserélje le
0.0.1a 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.javapé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()); } } }Megjegyzés
Ha az előző hívásban nem állít be argumentumokat a
WorkspaceClient w = new WorkspaceClient()-ban, 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. Például, ehhez az IntelliJ IDEA-ban a főmenüben kattintson a Build > Projekt építése.
Futtassa a fő fájlt. Ha például egy projekt
Main.javafájljához az IntelliJ IDEA-ban szeretné ezt megtenni, kattintson a főmenüben a Futtatás > Futtassa a 'Main' parancsot.Megjelenik a klaszterek 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 Megtekintés > Eszközablakok > Futtatás parancsra.
A Java Databricks SDK hitelesítése az Azure Databricks-fiókkal vagy -munkaterülettel
A Java Databricks SDK a Databricks 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 egyesített hitelesítését.
Megjegyzés
A Java-hoz készült Databricks SDK még nem implementálta a hitelesítést azure-beli felügyelt identitásokkal.
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_PROFILEkö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
WorkspaceClientobjektumot 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 példa rögzíti az Azure Databricks gazda- és hozzáférési jogkivonat értékeit a Databricks jogkivonat-hitelesítéshez.
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.xmlfájl meglévő<dependencies>szakaszához:<dependency> <groupId>com.databricks</groupId> <artifactId>databricks-dbutils-scala_2.12</artifactId> <version>0.1.4</version> </dependency>Megjegyzés
Ne felejtse el lecserélni a
0.1.4-t a Databricks Utilities for Scala könyvtár legújabb verziójára. A legújabb verziót a Maven központi adattárában találja.Utasítsa a projektet, hogy deklarálja a Scala használható Databricks segédprogramjaitól való függőséget. 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.txta 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ákért nézze meg a példák mappát a GitHub-on található Databricks SDK for Java adattárban.
- 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
Hozzon létre egy fürtöt
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 munkavégzővel rendelkezik, és 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");
}
}
Fürt létrehozása adott JDK-verzióval
Létrehozhat egy olyan fürtöt, amely egy adott verzióját használja a Java Development Kitnek (JDK).
Megjegyzés
- A Databricks Runtime 18.0 esetében a JDK 21 általánosan elérhető és az alapértelmezett, a JDK 17 pedig a tartalék lehetőség.
- A Databricks Runtime 17.3 esetében a JDK 21 nyilvános előzetes verzióban, a JDK 17 pedig az alapértelmezett.
- A Databricks Runtime 16.0-s vagy újabb verziója esetén a JDK 17 általánosan elérhető, és az alapértelmezett.
- A Databricks Runtime 13.1-15.4-ös verziói esetében a JDK 8 az alapértelmezett, a JDK 17 pedig nyilvános előzetes verzióban érhető el.
Fürt létrehozásakor adja meg, hogy a fürt JDK 17-et vagy JDK 21-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.
JDK 17 esetén:
JNAME=zulu17-ca-amd64
JDK 21 esetén:
JNAME=zulu21-ca-amd64
Fürt végleges törlése
Ez a példakód véglegesen törli a meghatározott 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 különböző hívásokat mutat be a files funkcionalitásra a WorkspaceClient keretein belül, hogy hozzáférjünk egy Unity Catalog kötethez.
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:
- A(z) Azure Databricks-hitelesítés be lett 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 építőeszköz. A Databricks javasolja
sbt. Ha IntelliJ IDEA-t használ, kiválaszthatja asbtScala-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
build.sbtfájljában vegyen fel egy függőséget a Databricks SDK for Java könyvtárra a következő sor hozzáadásával a fájl végére, majd mentse a fájlt.libraryDependencies += "com.databricks" % "databricks-sdk-java" % "0.2.0"Megjegyzés
Mindenképpen cserélje le
0.2.0a Databricks SDK Java-hoz készült 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 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.scalapé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) } } }Megjegyzés
Ha az előző hívásban nem állít be argumentumokat a
val w = new WorkspaceClient()-ban, 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. Például, ehhez az IntelliJ IDEA-ban a főmenüben kattintson a Build > Projekt építése.
Futtassa a fő fájlt. Például, az IntelliJ IDEA-ban egy projekt
Main.scalafájljához, kattintson a főmenüben a Run Run 'Main.scala' parancsra>.Megjelenik a klaszterek 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 Megtekintés > Eszközablakok > Futtatás 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 egy Databricks Utilities for Scala könyvtárat biztosít, amellyel programozottan elérheti a Databricks segédprogramokat Scala nyelven.
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.sbtpé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"Megjegyzés
Mindenképpen cserélje ki
0.1.4a Scala könyvtárhoz készült Databricks Utilities legújabb verziójára. A legújabb verziót a Maven központi adattárában találja.Utasítsa a projektet, hogy állítsa be a bejelentett függőséget a Scala Databricks segédprogramok használatához. 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.txta 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) } }Megjegyzé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
DatabricksCfgobjektumot 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
DatabricksCfgobjektumot. Ennek az az oka, hogy a Databricks Utilities for Scala az alapértelmezett Databricks Utilities-t hívja meg, amikor a Databricks Runtime-on belül fut.Készítse el a projektet, és futtassa a fő fájlt.
A Unity Catalog kötetek eléréséhez a files használja WorkspaceClient keretein belül. Lásd: Fájlok kezelése a Unity-katalógus köteteiben. Nem használhatja a DBUtils.getDBUtils() a kötetek eléréséhez.
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 következő fájl Main.java nevű, amely meghívja a createCluster függvényt:
// 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 kiszimulál, definiálja a kiszimulált objektum beállításait, majd átadja a kiszimulált 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);
}
}
Hibaelhárítás
Ez a szakasz a Java Databricks SDK-val kapcsolatos gyakori problémák megoldásait ismerteti.
A problémák vagy egyéb visszajelzések jelentéséhez hozzon létre egy GitHub-problémát a Java Databricks SDK-hoz.
Hiba: Nem lehet elemezni a választ
Ha a Következő hibaüzenet jelenik meg a Java Databricks SDK használatakor, az szinte mindig a hitelesítési konfigurációval kapcsolatos problémát jelez.
Error: unable to parse response. This is likely a bug in the Databricks SDK for Java or the underlying REST API.
Ha ezt a hibát tapasztalja, ellenőrizze a következőket:
- Győződjön meg arról, hogy a Databricks-gazdagép megfelelően van beállítva.
- Győződjön meg arról, hogy a hitelesítési módszer rendelkezik a végrehajtani kívánt API-művelethez szükséges engedélyekkel.
- Ha vállalati tűzfal mögött áll, győződjön meg arról, hogy nem blokkolja vagy irányítja át az API-forgalmat.
A hiba gyakori oka, hogy az SDK-t egy bejelentkezési lapra irányítja át a privát hivatkozás, amelyet az SDK nem tud feldolgozni. Ez általában akkor fordul elő, ha egy olyan privát kapcsolattal kompatibilis munkaterületet próbál elérni, amelynek nincs nyilvános internet-hozzáférése egy másik hálózatról, mint amelyhez a VPC-végpont tartozik.
További részletekért lásd:
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
- Naplózás
- Hosszú ideig futó műveletek
- Lapszámozott válaszok